源碼編譯LNMP架構

衆所周知,LAMP 平臺是目前應用最爲普遍的網站服務器架構,其中的「A」對應着Web服務軟件Apache HTTP Server。隨着Nginx在企業中的使用愈來愈多,LNMP(或LEMP)架構也受到愈來愈多Linux系統工程師的青睞,其中的「E」就來自於Nginx的發音[engine x]。就像構建LAMP平臺一同樣, 構建LNMP平臺也須要Linux服務器、MySOL數據庫和PHP解析環境,區別主要在Nginx與PHP的協做配置上。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爲例mysql

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模塊linux

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

源碼編譯LNMP架構

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  //檢測語法

源碼編譯LNMP架構

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

service nginx restart      //重啓服務

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

在瀏覽器中訪問PHP文件
源碼編譯LNMP架構nginx

第五步:建立論壇

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; //刷新數據庫//

源碼編譯LNMP架構

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();
?>

源碼編譯LNMP架構

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架構
源碼編譯LNMP架構
源碼編譯LNMP架構
源碼編譯LNMP架構
源碼編譯LNMP架構
源碼編譯LNMP架構
源碼編譯LNMP架構

相關文章
相關標籤/搜索