1. 程式人生 > >源碼編譯LNMP架構

源碼編譯LNMP架構

evel 系統工程 inno -c pcr nss sys deb echo

眾所周知,LAMP 平臺是目前應用最為廣泛的網站服務器架構,其中的“A”對應著Web服務軟件Apache HTTP Server。隨著Nginx在企業中的使用越來越多,LNMP(或LEMP)架構也受到越來越多Linux系統工程師的青睞,其中的“E”就來自於Nginx的發音[engine x]。就像構建LAMP平臺一一樣, 構建LNMP平臺也需要Linux服務器、MySOL數據
庫和PHP解析環境,區別主要在Nginx與PHP的協作配置上。

第一步:安裝Nginx

1.編譯安裝Nginx

--------安裝依賴包-------
yum -y install pcre-devel zlib-devel gcc gcc-c++ cmake

//創建nginx用戶
useradd -M -s /sbin/nologin nginx

//解壓到/opt
tar xzvf nginx-1.6.0.tar.gz -C /opt

---------配置編譯安裝--------
cd /opt/nginx-1.6.0/

 ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module             //開啟stub_status狀態統計模塊//

make
make install

2.制作啟動腳本

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/   //讓系統識別命令

-----檢查、啟動、重啟、停止--------
nginx -t        //檢查
nginx           //啟動
killall -1 nginx    //重啟
killall -3 nginx    //停止

-------制作管理角本--------
vi /etc/init.d/nginx
#!/bin/bash
# chkconfig: - 99 20
# description: Nginx Service 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

chmod +x /etc/init.d/nginx
chkconfig --add nginx   //開機自啟動
service nginx start

第二步:安裝MySQL

這裏以版本5.5.24為例

1.編譯安裝MySQL

yum -y install ncurses-devel                  //ncurses是字符終端下屏幕控制的基本庫//

tar xzvf mysql-5.5.24.tar.gz -C /opt
cd /opt/mysql-5.5.24
cmake  -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCONFDIR=/etc -DMYSQL_DATADIR=/home/mysql/ -DMYSQL_UNIX_ADDR=/home/mysql/mysql.sock -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_SSL=system -DMYSQL_TCP_PORT=3306 -DENABLE_DOWNLOADS=1 -DWITH_SSL=bundled

make && make install

2.優化調整

cp support-files/my-medium.cnf /etc/my.cnf    //復制配置文件
cp support-files/mysql.server /etc/init.d/mysqld  //復制啟動腳本
chmod +x /etc/init.d/mysqld       
chkconfig --add mysqld
chkconfig --level 35 mysqld on 
echo "PATH=$PATH:/usr/local/mysql/bin/" >> /etc/profile //配置環境變量
. /etc/profile            (註意:"."後面有空格)

3.初始化數據庫

useradd -s /sbin/nologin mysql
chown -R mysql.mysql /usr/local/mysql

/usr/local/mysql/scripts/mysql_install_db --user=mysql --ldata=/var/lib/mysql --basedir=/usr/local/mysql --datadir=/home/mysql 

ln -s /var/lib/mysql/mysql.sock  /home/mysql/mysql.sock

4.啟動MySQL服務

vi /etc/init.d/mysqld    //配置啟動腳本
 basedir=/usr/local/mysql   
 datadir=/home/mysql

service mysqld start

mysqladmin -u root -p password "abc123"  //為root用戶設置密碼

第三步:安裝PHP解析環境

  • Nginx配置網頁動靜分離、解析PHP,有兩種方法可以選擇:使用PHP的FPM模塊,或者將訪問PHP頁面的Web請求轉交給Apache服務器去處理。
  • 較新版本的PHP已經自帶FPM (FastCGI Process Manager, FastCGI進程管理器)模塊,用來對PHP解析實例進行管理和優化解析效率。FastCGI 將靜態請求和動態腳本語言分離開,Nginx 專門處理靜態請求,並轉發動態請求給PHP-FPM。單服務器的
    LNMP架構通常使用FPM的方式來解析PHP。

1.使用yum工具安裝PHP的依賴包。

//首先安裝GD庫及GD庫關聯程序
yum -y install gd libxml2-devel libjpeg-devel libpng-devel zlib-devel fontconfig-devel openssl-devel bzip2-devel

2.編譯安裝PHP

tar jxvf php-5.4.5.tar.bz2 -C /opt
cd /opt/php-5.4.5
./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php5 --enable-mbstring --with-jpeg-dir --with-openssl --disable-ipv6 --enable-fpm    //添加fpm模塊

make && make install

3.復制模板文件作為PHP的主配置文件

cp php.ini-development /usr/local/php5/php.ini

4.為PHP安裝加速器,用於提高PHP的解析效率

tar xzvf ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz -C /opt
cd /opt/ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x
cp ZendGuardLoader.so /usr/local/php5/lib/php

修改PHP的主配置文件,開啟ZendGuardLoader模塊

vi /usr/local/php5/php.ini
[Zend Guard Loader]
zend_extension=/usr/local/php5/lib/php/ZendGuardLoader.so
zend_loader.enable=1  //1表示開啟

第四步:配置Nginx支持PHP環境

1.PHP-FPM模塊配置

(1)復制模板文件php-fpm.conf.default作為PHP-FPM的配置文件

cd /usr/local/php5/etc/
cp  php-fpm.conf.default php-fpm.conf

(2)修改php-fpm.conf配置文件

useradd -M -s /sbin/nologin php  //創建php用戶

vi php-fpm.conf //修改

pid = run/php-fpm.pid    //確定pid文件位置

user = php              //表示由php用戶調用
group = php

pm.max_children=50      //fpm模塊的最大進程數

pm.start_servers = 20   //啟動時開啟的進程數

pm.min_spare_servers = 5  //最小空閑進程數

pm.max_spare_servers = 35 //最大空閑進程數

(3)啟動PHP-FPM模塊,進程使用9000端口

//設置軟鏈接,方便命令使用
ln -s /usr/local/php5/bin/* /usr/local/bin/ 
ln -s /usr/local/php5/sbin/* /usr/local/sbin/
/usr/local/sbin/php-fpm
netstat -lntup | grep 9000

技術分享圖片

2.配置Nginx支持PHP解析

(1)在Nginx的主配置文件中的server{}配置段,將PHP的網頁請求轉發給FPM模塊處理

cd /usr/local/nginx/conf/
cp nginx.conf nginx.conf.bak  //修改前做備份
vi nginx.conf

location ~ \.php$ {
            root           /var/www/benet;    //php文件所在目錄
            fastcgi_pass   127.0.0.1:9000;    //php文件轉發給FPM模塊
            fastcgi_index  index.php;        //默認文件是index.php
            include        fastcgi.conf;   //包含fastcgi.conf配置文件
        }

nginx -t  //檢測語法 

技術分享圖片

(2)在/var/www/benet下創建php測試頁面

service nginx restart      //重啟服務

mkdir -p /var/www/benet     //創建目錄
vi /var/www/benet/index.php  //創建php文件
<?php
phpinfo();
?>

在瀏覽器中訪問PHP文件
技術分享圖片

第五步:創建論壇

1.創建bbs數據庫並授權

mysql -u root -p

mysql> CREATE DATABASE bbs;  //創建一個數據庫//

mysql> GRANT all ON bbs.* TO ‘bbsuser‘@‘%‘ IDENTIFIED BY ‘admin123‘;   //把bbs數據庫裏面所有表的權限授予給bbsuser,並設置密碼//

mysql>flush privileges; //刷新數據庫//

技術分享圖片

2.測試數據庫

vi /var/www/benet/index.php
<?php
$link=mysql_connect(‘192.168.26.153‘,‘bbsuser‘,‘admin123‘);
if($link) echo "Success!!";
else echo "Fail!!";
mysql_close();
phpinfo();
?>

技術分享圖片

3.安裝論壇

unzip Discuz_X3.3_SC_UTF8.zip -d /opt/dis  //解壓Discuz

cd /opt/dis

cp -r upload/ /var/www/benet/bbs

cd /var/www/benet/bbs
chown -R php ./config    //修改屬性
chown -R php ./data
chown -R php ./uc_client

chown -R php ./uc_server/data

4.訪問瀏覽器,安裝論壇

http://192.168.26.153/bbs/install/index.php

技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片
技術分享圖片

源碼編譯LNMP架構