目錄
- 一、LNMP相關概念
- 二、安裝Nginx服務
- 前提
- 1、安裝依賴包
- 2、創建運行用戶
- 3、編譯安裝
- 4、路徑優化
- 5、添加Nginx系統服務
- 三、安裝MySQL服務
- 1、安裝Mysql環境依賴包
- 2、創建運行用戶
- 3、編譯安裝
- 4、修改mysql 組態檔
- 5、更改mysql安裝目錄和組態檔的屬主屬組
- 6、設定路徑環境變數
- 7、初始化資料庫
- 8、添加mysqld系統服務
- 9、修改mysql 的登錄密碼
- 四、安裝配置PHP決議環境
- 1、安裝環境依賴包
- 2、編譯安裝
- 3、路徑優化
- 4、調整PHP組態檔
- (1)調整主組態檔
- (2)調整行程服務組態檔
- (3)調整擴展組態檔
- 5、啟動php-fpm
- 6、配置Nginx支持PHP決議
- 7、測驗訪問頁
- 8、驗證資料庫
- 五、部署Discz社區論壇web應用
- 1、解壓論壇壓縮包
- 2、更改論壇目錄的屬主
- 3、瀏覽器訪問驗證
相關安裝包
鏈接:https://pan.baidu.com/s/1LysiQyLqHlmzZ5zWiCYDYQ
提取碼:8wio
一、LNMP相關概念
- LNMP就是:Linux系統下Nginx+MySQL+PHP這種網站服務器架構,
- 對比LAMP,其中不同的就是網站服務器程式------Nginx(LNMP)和Apache(LAMP)
- Nginx是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP代理服務器,
| 對比項 | Nginx | Apache |
|---|---|---|
| 組態檔 | 簡潔 | 復雜 |
| 資源的使用 | Nginx對比Apache更節省資源 | 占用資源較多 |
| 適合網站的狀態 | 靜態 | 動態互動 |
一般來說,需要性能的web服務,用nginx ,
如果不需要性能只求穩定,更考慮apache
二、安裝Nginx服務
前提
#關防火墻
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

1、安裝依賴包
#nginx的配置及運行需要pcre、zlib等軟體包的支持,因此需要安裝這些安裝的開發包,以便提供相應的庫和頭檔案,
yum -y install pcre-devel zlib-devel gcc gcc-c++ make

2、創建運行用戶
- Nginx 服務程式默認以 nobody 身份運行,建議為其創建專門的用戶賬號,以便更準確地控制其訪問權限
useradd -M -s /sbin/nologin nginx

3、編譯安裝
cd /opt/
tar zxvf nginx-1.12.0.tar.gz
cd nginx-1.12.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
#-----配置命令解釋
--prefix=/usr/local/nginx #指定nginx的安裝路徑
--user=nginx #指定用戶名
--group=nginx #指定組名
--with-http_stub_status_module #啟用 http_stub_status_module 模塊以支持狀態統計
#-----
make && make install

4、路徑優化
#將應用程式nginx中可執行的命令做個軟鏈接到環境路徑變數中,讓系統識別nginx的操作命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

5、添加Nginx系統服務
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
chmod 754 /lib/systemd//system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

三、安裝MySQL服務
1、安裝Mysql環境依賴包
yum -y install \
ncurses \
ncurses-devel \
bison \
cmake
#--------環境包解釋------------
ncurses #字符終端下圖形互動功能的動態庫
ncurses-devel #ncurses開發包
bison #語法分析器
cmake #mysql需要用cmake編譯安裝

2、創建運行用戶
useradd -M -s /sbin/nologin mysql

3、編譯安裝
cd /opt
tar zxvf mysql-boost-5.7.20.tar.gz
cd /opt/mysql-5.7.20/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
make && make install
注意:如果在CMAKE的程序中有報錯,當報錯解決后,需要把原始碼目錄中的CMakeCache.txt檔案洗掉,然后再重新CMAKE,否則錯誤依舊
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql #指定mysql的安裝路徑
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock #指定mysql行程監聽套接字檔案(資料庫連接檔案)的存盤路徑
-DSYSCONFDIR=/etc #指定組態檔的存盤路徑
-DSYSTEMD_PID_DIR=/usr/local/mysql #指定行程檔案的存盤路徑
-DDEFAULT_CHARSET=utf8 #指定默認使用的字符集編碼,如 utf8
-DDEFAULT_COLLATION=utf8_general_ci #指定默認使用的字符集校對規則
-DWITH_EXTRA_CHARSETS=all #指定支持其他字符集編碼
-DWITH_INNOBASE_STORAGE_ENGINE=1 #安裝INNOBASE存盤引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 #安裝ARCHIVE存盤引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 #安裝BLACKHOLE存盤引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 #安裝FEDERATED存盤引擎
-DMYSQL_DATADIR=/usr/local/mysql/data #指定資料庫檔案的存盤路徑
-DWITH_BOOST=boost #指定boost的路徑,若使用mysql和boost集成包安裝則-DWITH_BOOST=/usr/local/boost
-DWITH_SYSTEMD=1 #生成便于systemctl管理的檔案
存盤引擎選項:
#MYISAM,MERGE,MEMORY,和CSV引擎是默認編譯到服務器中,并不需要明確地安裝,
#靜態編譯一個存盤引擎到服務器,使用-DWITH_engine_STORAGE_ENGINE= 1
#可用的存盤引擎值有:ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), PARTITION (partitioning support), 和PERFSCHEMA (Performance Schema)
#常用的兩個存盤引擎是:MYISAM和INNOBASE(InnoDB).


4、修改mysql 組態檔
#洗掉原配置項,再重新添加下面內容
vim /etc/my.cnf
#客戶端設定
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
#服務全域設定
[mysqld]
#設定管理用戶
user = mysql
#指定資料庫的安裝目錄
basedir=/usr/local/mysql
#指定資料庫檔案的存盤路徑
datadir=/usr/local/mysql/data
#指定埠
port = 3306
#設定服務器字符集編碼格式為utf8
character-set-server=utf8
#指定pid 行程檔案路徑
pid-file = /usr/local/mysql/mysqld.pid
#指定資料庫連接檔案
socket=/usr/local/mysql/mysql.sock
#設定監聽地址,0.0.0.0代表允許所有,如允許多個IP需空格隔開
bind-address = 0.0.0.0
#禁用DNS決議
skip-name-resolve
#設定mysql的最大連接數
max_connections=2048
#指定默認存盤引擎
default-storage-engine=INNODB
#設定資料庫接收的資料包大小的最大值
max_allowed_packet=16M
#指定服務ID號
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
----------------------------------------------------------------------------------------------------------
sql_mode常用值如下:
NO_ENGINE_SUBSTITUTION
如果需要的存盤引擎被禁用或未編譯,那么拋出錯誤,不設定此值時,用默認的存盤引擎替代,并拋出一個例外
STRICT_TRANS_TABLES
在該模式下,如果一個值不能插入到一個事務表中,則中斷當前的操作,對非事務表不做限制
NO_AUTO_CREATE_USER
禁止GRANT創建密碼為空的用戶
NO_AUTO_VALUE_ON_ZERO
mysql中的自增長列可以從0開始,默認情況下自增長列是從1開始的,如果你插入值為0的資料會報錯
NO_ZERO_IN_DATE
不允許日期和月份為零
NO_ZERO_DATE
mysql資料庫不允許插入零日期,插入零日期會拋出錯誤而不是警告
ERROR_FOR_DIVISION_BY_ZERO
在INSERT或UPDATE程序中,如果資料被零除,則產生錯誤而非警告,默認情況下資料被零除時MySQL回傳NULL
PIPES_AS_CONCAT
將"||"視為字串的連接運算子而非或運算子,這和Oracle資料庫是一樣的,也和字串的拼接函式Concat相類似
ANSI_QUOTES
啟用ANSI_QUOTES后,不能用雙引號來參考字串,因為它被解釋為識別符

5、更改mysql安裝目錄和組態檔的屬主屬組
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

6、設定路徑環境變數
echo "export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib">> /etc/profile
source /etc/profile

7、初始化資料庫
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

8、添加mysqld系統服務
cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld
netstat -anpt | grep 3306

9、修改mysql 的登錄密碼
mysqladmin -u root -p password "123456"

四、安裝配置PHP決議環境
1、安裝環境依賴包
yum -y install \
gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel

2、編譯安裝
cd /opt
tar jxvf php-7.1.10.tar.bz2
cd /opt/php-7.1.10/
./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip
make && make install
相關解釋:
--prefix=/usr/local/php #指定將 PHP 程式的安裝路徑
--with-mysql-sock=/usr/local/mysql/mysql.sock #指定mysql 資料庫連接檔案的存盤路徑
--with-mysqli #添加 MySQL 擴展支持 #mysqli擴展技術不僅可以呼叫MySQL的存盤程序、處理MySQL事務,而且還可以使訪問資料庫作業變得更加穩定
--with-zlib #支持zlib功能,提供資料壓縮
--with-curl #開啟curl擴展功能,實作HTTP的Get下載和Post請求的方法
--with-gd #激活gd 庫的支持
--with-jpeg-dir #激活jpeg 的支持
--with-png-dir #激活png 的支持
--with-freetype-dir
--with-openssl
--enable-fpm
--enable-mbstring #啟用多位元組字串功能,以便支持中文等代碼
--enable-xml #開啟擴展性標記語言模塊
--enable-session #會話
--enable-ftp #文本傳輸協議
--enable-pdo #函式庫
--enable-tokenizer #令牌解釋器
--enable-zip #ZIP壓縮格式


3、路徑優化
ln -s /usr/local/php/bin/* /usr/local/bin/

4、調整PHP組態檔
- php有三個組態檔
- 主組態檔------php.ini
- 行程服務組態檔------php-fpm.conf
- 擴展組態檔------www.conf
(1)調整主組態檔
cp /opt/php-7.1.10/php.ini-development /usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini
#939行;取消注釋,修改
date.timezone = Asia/Shanghai
#1170行;修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
php -m


(2)調整行程服務組態檔
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
#17行;去掉注釋符“;”
pid = run/php-fpm.pid

(3)調整擴展組態檔
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf

5、啟動php-fpm
#PHP-FPM(FastCGI Process Manager:FastCGI行程管理器),是一個PHPFastCGI管理器,由于Nginx服務器不能處理動態頁面,需要把Nginx把動態請求交給php-fpm行程繼續決議,
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
netstat -anpt | grep 9000

6、配置Nginx支持PHP決議
vim /usr/local/nginx/conf/nginx.conf
#65行;取消注釋并修改
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#將/scripts修改成nginx的作業目錄
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
systemctl restart nginx.service

7、測驗訪問頁
vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
#使用瀏覽器訪問
http://192.168.163.10/index.php


8、驗證資料庫
mysql -u root -p
#創建一個資料庫
CREATE DATABASE bbs;
#把bbs資料庫里面所有表的權限授予給bbsuser,并設定密碼123456
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY '123456';
#重繪資料庫
flush privileges;
#查看有哪些資料庫
show databases;
vim /usr/local/nginx/html/index.php
<?php
$link=mysqli_connect('192.168.163.10','bbsuser','123456');
if($link)
echo "<h1>Success!!</h1>";
else
echo "Fail!";
?>


五、部署Discz社區論壇web應用
1、解壓論壇壓縮包
cd /opt
unzip /opt/Discuz_X3.4_SC_UTF8.zip -d /opt/dis
#上傳站點更新包
cd /opt/dis/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs

2、更改論壇目錄的屬主
cd /usr/local/nginx/html/bbs
chown -R root:nginx ./config/
chown -R root:nginx ./data/
chown -R root:nginx ./uc_client/
chown -R root:nginx ./uc_server/
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/


3、瀏覽器訪問驗證
論壇頁面訪問
http://192.168.163.10/bbs/install/index.php
#填寫資料庫資訊
資料庫服務器:localhost ###本地架設就用localhost,如何不是在在本機上就要填寫IP地址和埠號
資料庫名字:bbs
資料庫用戶名:bbsuser
資料庫密碼:123456
管理員賬號:admin
管理員密碼:admin123
#結束
#論壇內部頁面
http://192.168.163.10/bbs/index.php
#論壇后臺管理員頁面
http://192.168.163.10/bbs/admin.php








轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/249464.html
標籤:其他
上一篇:資料庫主從復制
下一篇:Educational Codeforces Round 102 (Rated for Div. 2) B. String LCM 題解
