LNMP平臺搭建

部署Nginx軟件

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

 

一、安裝Mysql數據庫

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

--------------------------------------------

二、安裝PHP解析環境

較新版本(如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網頁,有兩種方法能夠選擇;其一: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)

二、安裝PHP解析環境

較新版本(如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網頁,有兩種方法能夠選擇;其一: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平臺中部署WEB應用

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)

相關文章
相關標籤/搜索