1)安裝支持軟件:php
Nginx的配置及運行須要pcre、zlib等軟件包的支持,所以應預先安裝這些軟件的開發包(devel),以便提供相應的庫和頭文件,確保Nginx的安裝順利完成。html
[root@nginx~]#systemctl stop firewalldmysql
[root@nginx~]#iptables -Flinux
[root@nginx~]#setenforce 0nginx
[root@nginx~]# yum -y install pcre-devel zlib-devel openssl-develsql
2)建立運行用戶、組:shell
Nginx服務程序默認以nobody身份運行,建議爲其建立專門的用戶帳號,以便更準確地控制其訪問權限,增長靈活性、下降安全風險。如:建立一個名爲nginx的用戶,不創建宿主目錄,也禁止登陸到shell環境。數據庫
[root@nginx~]#useradd -M -s /sbin/nologin nginxvim
指定shell /sbin/noligin 是不容許用戶登陸的意思api
3)編譯安裝nginx:
釋放nginx源碼包
[root@nginx~]# tar xf nginx-1.16.0.tar.gz -C /usr/src/
4)配置編譯:
[root@nginx~]# cd /usr/src/nginx-1.16.1/
[root@nginxnginx-1.14.2]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_flv_module --with-http_gzip_static_module && make && make install
注:配置前能夠參考:./configure --help給出說明
l --prefix 設定Nginx的安裝目錄
l --user和--group 指定Nginx運行用戶和組
l --with-http_stub_status_module 啓用http_stub_status_module模塊以支持狀態統計
l --with-http_ssl_module 啓用SSL模塊
l --with-http_flv_module 啓用FLV模塊,提供尋求內存使用基於時間的偏移量文件
爲了使Nginx服務器的運行更加方便,能夠爲主程序nginx建立連接文件,以便管理員直接執行nginx命令就能夠調用Nginx的主程序。
[root@nginxnginx-1.14.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
[root@nginxnginx-1.14.2]#ll /usr/local/sbin
lrwxrwxrwx 1 root root 27 12-29 07:24 /usr/local/sbin-> /usr/local/nginx/sbin/nginx
5)Nginx的運行控制:
與Apache的主程序httpd相似,Nginx的主程序也提供了"-t"選項用來對配置文件進行檢查,以便找出不當或錯誤的配置。配置文件nginx.conf默認位於安裝目錄/usr/local/nginx/conf/目錄中。若要檢查位於其餘位置的配置文件,可以使用"-c"選項來指定路徑。
[root@nginxconf]#nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
6)啓動、中止Nginx:
直接運行nginx便可啓動Nginx服務器,這種方式將使用默認的配置文件,若要改用其餘配置文件,需添加"-c 配置文件路徑"選項來指定路徑。須要注意的是,若服務器中已安裝有httpd等其餘WEB服務軟件,應採起措施(修改端口,停用或卸載其餘軟件)避免部突。
[root@nginxconf]# netstat -anpt |grep :80
[root@nginxconf]#nginx
[root@nginxconf]# netstat -anpt |grep :80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6810/nginx: master
爲了使Nginx服務的啓動、中止、重載等操做更加方便,能夠編寫Nginx服務腳本,並使用chkconfig和systemctl工具來進行管理,也更加符合RHEL系統的管理習慣。
[root@nginx~]# vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: 2345 99 20
# description: Nginx Server Control Script
PROG="/usr/local/nginx/sbin/nginx"
PIDF="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
$PROG
;;
stop)
kill -s QUIT $(cat $PIDF)
;;
restart)
$0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDF)
;;
*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1
esac
exit 0
[root@nginx~]#chmod +x /etc/init.d/nginx
[root@nginx~]#chkconfig --add nginx
[root@nginx~]#chkconfignginx on
[root@nginx~]#chkconfig --list nginx
nginx 0:關閉 1:關閉 2:啓用 3:啓用 4:啓用 5:啓用 6:關閉
Nginx內置了HTTP_STUB_STATUS狀態統計模塊,用來反饋當前的WEB訪問狀況。配置
編譯參數時可添加--with-http_stub_stastus_module來啓用此模塊。要使用Nginx的狀態統計功能,除了啓用內建模塊之外,還須要修改nginx.conf文件,指定訪問位置並打開stub_status配置。在http{}配置的server{}子配置內添加以下配置項
[root@nginx~]# vim /usr/local/nginx/conf/nginx.conf
location /status {
stub_status on; //打開狀態統計功能
access_log off; //關閉此位置的日誌記錄
}
[root@nginxconf]#systemctl restart nginx
瀏覽器訪問 http://192.168.200.111/status
1)基於源碼包安裝MySQL
[root@nginx~]# rpm -q mysql mysql-server mariadb mairadb-server
ncurses-devel是cmake的依賴包
[root@nginx~]# yum -y install ncurses-devel
[root@nginx~]# rpm -q ncurses-devel
ncurses-devel-5.9-14.20130511.el7_4.x86_64
建議採用yum安裝方式
[root@nginx~]# yum -y install cmake
[root@nginx~]# rpm -q cmake
cmake-2.8.12.2-2.el7.x86_64
建立運行用戶
[root@nginx~]#useradd -M -s /sbin/nologin mysql
解包,配置,編譯,安裝
[root@nginx~]# tar xf mysql-5.7.24.tar.gz -C /usr/src/
[root@nginx~]#mkdir /usr/local/boost
[root@nginx~]#tar xf boost_1_59_0.tar.gz -C /usr/local/boost
[root@nginx~]# cd /usr/src/mysql-5.7.24/
[root@nginx mysql-5.7.24]#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc -DWITH_BOOST=/usr/local/boost && make && make install
2)安裝後的調整
對數據庫目錄進行權限設置
[root@nginxmysql]#chown -R mysql:mysql /usr/local/mysql/
創建配置文件(CentOS7系統默認支持MariaDB數據庫,系統默認的/etc/my.cnf配置文件是MariaDB的配置文件 )
[root@nginxmysql]# vim /etc/my.cnf
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
[mysqld_safe]
log-error=/usr/local/mysql/data/mysql.log
pid-file=/usr/local/mysql/data/mysql.pid
3)初始化數據庫
[root@nginxmysql]# /usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
2018-12-08T01:51:39.798903Z 1 [Note] A temporary password is generated for root@nginx: TvC:Rm1ZlxtG
l --basedir=/usr/local/mysql/ //指定安裝目錄(產品目錄)
l --datadir=/usr/local/mysql/data //指定數據目錄
l --user=mysql //指定用戶身份
4)設置環境變量
[root@nginx mysql-5.7.24]# echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
[root@nginx mysql-5.7.24]# source /etc/profile
5)添加系統服務
添加MySQL爲系統服務,以便經過systemctl命令進行管理
[root@localhost~]#cp /usr/src/mysql-5.7.24/support-files/mysql.server /etc/init.d/mysqld
[root@localhost~]#chmod +x /etc/init.d/mysqld
[root@localhost~]#/etc/init.d/mysqld start
[root@localhost~]#netstat -lnpt |grep mysqld
後期修改數據庫用戶的密碼:
[root@nginx~]#mysqladmin -u root -p'TvC:Rm1ZlxtG' password '123456'
----------------------------------------
mysql 等不上的解決方法
rm -rf /usr/local/mysql/data
/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
source /etc/profile
netstat -anpt |grep 3306 查看PID號
kill -9 PID
/etc/init.d/mysqld start 便可登上mysql
--------------------------------------------
較新版本(如5.6)的PHP已經自帶FPM(fastCGI process manager,FastCGI進程管理器)模塊,用來對PHP解析實例進行管理,優化解析效率,所以在配置PHP編譯選項時應添加"--enable-fpm"以啓用此模塊。
爲了提升PHP解析效率,建議將相應版本的ZendGuardLander也裝上。
1)編譯安裝php
[root@nginx~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel
[root@nginx~]# tar xf php-5.6.39.tar.gz -C /usr/src/
[root@nginx~]# cd /usr/src/php-5.6.39/
[root@nginxphp-5.6.39]# ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib && make && make install
2)安裝後的調整
[root@nginxphp-5.6.39]#cp php.ini-production /usr/local/php5/php.ini
[root@nginxphp-5.6.39]# ln -s /usr/local/php5/bin/* /usr/local/bin/
[root@nginxphp-5.6.39]#ln -s /usr/local/php5/sbin/* /usr/local/sbin/
3)安裝ZendGuardLander(注意:如果64位系統,該軟件獲得其官網下載64位的相應軟件包,若用32位的就會報錯。下載地址:http://www.zend.com/en/products/guard/downloads
[root@nginx~]# tar xf zend-loader-php5.6-linux-x86_64_update1.tar.gz -C /usr/src/
[root@nginx~]# cd /usr/src/zend-loader-php5.6-linux-x86_64/
[root@nginx zend-loader-php5.6-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php/
[root@nginx zend-loader-php5.6-linux-x86_64]#vim /usr/local/php5/php.ini
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1
若要讓Nginx可以解析PHP網頁,有兩種方法能夠選擇;其一:Nginx充當中介,將訪問PHP頁面的WEB請求轉交給其餘服務器(LAMP)去處理;其二:經過使用PHP的FPM模塊來調用本機的PHP環境。
若是選用FPM方式,則須要先啓動php-fpm進程,以便監聽PHP解析請求。參考範例創建php-fpm.conf配置文件,並修改其中的PID文件、運行用戶、服務數(進程數量)等相關設置,而後啓動php-fpm程序便可(默認監聽本機的9000端口)
[root@nginx~]# cd /usr/local/php5/etc/
[root@nginxetc]# cp php-fpm.conf.default php-fpm.conf
[root@nginxetc]#useradd -M -s /sbin/nologin php
[root@nginxetc]# vim php-fpm.conf
25 pid = run/php-fpm.pid //確認pid文件位置
149 user = php //運行用戶
150 group = php //運行組
246pm.start_servers = 20 //啓動時開啓的進程數
251pm.min_spare_servers = 5 //最少空閒進程數
256pm.max_spare_servers = 35 //最大空閒進程數
241pm.max_children = 50 //最多空閒進程數
[root@nginxetc]# /usr/local/sbin/php-fpm
[root@nginxetc]# netstat -anpt |grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 23027/php-fpm.conf)
較新版本(如5.6)的PHP已經自帶FPM(fastCGI process manager,FastCGI進程管理器)模塊,用來對PHP解析實例進行管理,優化解析效率,所以在配置PHP編譯選項時應添加"--enable-fpm"以啓用此模塊。
爲了提升PHP解析效率,建議將相應版本的ZendGuardLander也裝上。
1)編譯安裝php
[root@nginx~]# yum -y install gd libxml2-devel libjpeg-devel libpng-devel
[root@nginx~]# tar xf php-5.6.39.tar.gz -C /usr/src/
[root@nginx~]# cd /usr/src/php-5.6.39/
[root@nginxphp-5.6.39]# ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm --with-jpeg-dir=/usr/lib && make && make install
2)安裝後的調整
[root@nginxphp-5.6.39]#cp php.ini-production /usr/local/php5/php.ini
[root@nginxphp-5.6.39]# ln -s /usr/local/php5/bin/* /usr/local/bin/
[root@nginxphp-5.6.39]#ln -s /usr/local/php5/sbin/* /usr/local/sbin/
3)安裝ZendGuardLander(注意:如果64位系統,該軟件獲得其官網下載64位的相應軟件包,若用32位的就會報錯。下載地址:http://www.zend.com/en/products/guard/downloads
[root@nginx~]# tar xf zend-loader-php5.6-linux-x86_64_update1.tar.gz -C /usr/src/
[root@nginx~]# cd /usr/src/zend-loader-php5.6-linux-x86_64/
[root@nginx zend-loader-php5.6-linux-x86_64]# cp ZendGuardLoader.so /usr/local/php5/lib/php/
[root@nginx zend-loader-php5.6-linux-x86_64]#vim /usr/local/php5/php.ini
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1
若要讓Nginx可以解析PHP網頁,有兩種方法能夠選擇;其一:Nginx充當中介,將訪問PHP頁面的WEB請求轉交給其餘服務器(LAMP)去處理;其二:經過使用PHP的FPM模塊來調用本機的PHP環境。
若是選用FPM方式,則須要先啓動php-fpm進程,以便監聽PHP解析請求。參考範例創建php-fpm.conf配置文件,並修改其中的PID文件、運行用戶、服務數(進程數量)等相關設置,而後啓動php-fpm程序便可(默認監聽本機的9000端口)
[root@nginx~]# cd /usr/local/php5/etc/
[root@nginxetc]# cp php-fpm.conf.default php-fpm.conf
[root@nginxetc]#useradd -M -s /sbin/nologin php
[root@nginxetc]# vim php-fpm.conf
25 pid = run/php-fpm.pid //確認pid文件位置
149 user = php //運行用戶
150 group = php //運行組
246pm.start_servers = 20 //啓動時開啓的進程數
251pm.min_spare_servers = 5 //最少空閒進程數
256pm.max_spare_servers = 35 //最大空閒進程數
241pm.max_children = 50 //最多空閒進程數
[root@nginxetc]# /usr/local/sbin/php-fpm
[root@nginxetc]# netstat -anpt |grep php-fpm
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 23027/php-fpm.conf)
[root@nginxetc]# vim /usr/local/nginx/conf/nginx.conf
server {
…… //省略部分信息
location / {
root html;
index index.php index.html index.htm;
}
location ~ \.php$ { //訪問php頁面的配置段
root html; //PHP網頁文檔根目錄
fastcgi_pass 127.0.0.1:9000; //php-fpm的監聽地址
fastcgi_index index.php; //PHP首頁文件
include fastcgi.conf; //包括fastcgi.conf樣本配置
}
}
[root@nginx~]# cat /usr/local/nginx/html/php.php
<?php
phpinfo();
?>
[root@nginxetc]# vim /usr/local/nginx/html/mysql.php
<?php
$link=mysqli_connect('localhost','root','123456'); //鏈接mysql數據庫
if($link) echo "<h1>恭喜你,大功告成!!</h1>"; //鏈接成功則返回信息
mysqli_close(); //關閉數據庫鏈接
?>
LNMP平臺與LAMP平臺是很是類似的,區別主要在於所用WEB服務軟件的不一樣,而這與使用PHP開發的WEB應用程序並沒有太大關係,所以PHP應用的部署方法也是相似的。
部署ComsenzDiscuz BBS論壇系統
Discuz!社區論壇是一個採用PHP與MySQL等多種數據庫構建的性能優異,功能全面的且安全穩定的社區論壇(BBS)軟件,其官方網站爲http://www.discuz.net
[root@nginx~]# unzip ComsenzDiscuz-DiscuzX-master.zip
[root@nginx~]# cd DiscuzX/
[root@nginxDiscuzX]# ls upload/
admin.phpapi.php config crossdomain.xml favicon.ico group.phpindex.php m misc.phpportal.phpsearch.php static uc_client
api archiver connect.php data forum.phphome.php install member.phpplugin.php robots.txt source template uc_server
上傳bbs代碼:
[root@nginxDiscuzX]# mv upload/ /usr/local/nginx/html/bbs
瀏覽器訪問http://192.168.200.111/bbs/install/index.php
設置權限及模板文件
[root@nginx~]# cd /usr/local/nginx/html/bbs/config/
[root@nginxconfig]# cp config_global_default.php config_global.php
[root@nginxconfig]# cp config_ucenter_default.php config_ucenter.php
[root@nginx~]# cd /usr/local/nginx/html/bbs
[root@nginxbbs]#chmod -R 777 config/ data/ uc_client/ uc_server/
準備數據庫並配置相關受權
[root@nginx~]#mysql -uroot -p123456
mysql> create database bbs;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on bbs.* to 'bbs'@'localhost' identified by 'bbs123456';
Query OK, 0 rows affected, 1 warning (0.07 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)