LEMP架構及應用部署
LEMP(Linux-Nginx-MySQL-PHP)網站架構是目前國際流行的Web架構,該架構包括:Linux作業系統,Nginx網絡伺服器,MySQL資料庫,Perl、PHP或者Python程式設計語言,所有組成産品均是開源軟體,是國際上成熟的架構架構,很多流行的商業應用都是采取這個架構,和 Java/J2EE架構相比,LNMP具有Web資源豐富、輕量、快速開發等特點,與微軟的.NET架構相比,LNMP具有通用、跨平台、高性能、低價格的優勢,是以LNMP無論是性能、品質還是價格都是企業搭建網站的首選平台。
适用環境
系統支援:CentOS-5 (32bit/64bit)、CentOS-6 (32bit/64bit)等linux系統
記憶體要求:≥256M
建構LAMP網站平台
以編譯的方式安裝nginx
(1)、使用yum安裝nginx所需要支援的軟體,分别是pcre-devel和zlib-devel。
[root@localhost ~]# yum -y install pcre-devel zlib-devel
(2)、建立運作使用者群組
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
(3)、編譯安裝nginx
[root@localhost ~]# tar zxf nginx-1.0.8.tar.gz
[root@localhost ~]# cd nginx-1.0.8
[root@localhost nginx]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_status_modult
[root@localhost ~]#make && make install
為了使nginx伺服器運作友善,可以為主程式nginx建立連結檔案。
[root@localhost ~]# ln -s /usr/local/nginx/sbin/nginx /usr/login/sbin
附加:
如有想讓對nginx服務啟動、關閉友善的話,建議編寫下面的腳本。
[root@localhost ~]#vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: - 9920
# 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
[root@localhost ~]# chmod +x /etc/init.d/nginx
[root@localhost ~]# chkconfig --add nginx
2. 安裝MySQL資料庫
(1)、編譯安裝MySQL資料庫
可以從官方網站www.mysql.com下載下傳,以5.1版本為例
[root@localhost ~]# tar zxf mysql-5.1.55.tar.gz
[root@localhost ~]# cd mysql-5.1.55
[[email protected]]# ./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-collation=utf8_general_ci --with-extra-charsets=gbk,gb2312
注解:
--with-charset //預設使用的字元集編碼
--with-collation //指定預設使用字元集校對規則
--with-extra-charsets //指定額外支援的其他字元集編碼
Utf8_general_ci //适用于UTF-8字元集的通用原則
[root@localhost ~]# make && make install
(2)、優化調整
[root@localhost mysql-1.5.55]# cp support-files/my-medium.cnf /etc/my.conf
[root@localhost mysql-1.5.55]# cp support-files/mysql.server /etc/init.d/mysqld
[root@localhost mysql-1.5.55]# chmod a+x /etc/rc.d/init.d/mysqld
[root@localhost mysql-1.5.55]# chkconfig --add mysqld
[root@localhost mysql-1.5.55]# ln -s /usr/local/mysql/sbin/* /usr/local/bin/
[root@localhost mysql-1.5.55]# ln -s /usr/local/mysql/lib/mysql/* /usr/lib/
[[email protected]]#ln -s /usr/local/mysql/include/mysql/* /usr/include
(3)、初始化資料庫
[root@localhost~]# useradd -M -u 27 -s /sbin/nologin mysql
[root@localhost~]# cd /usr/local/mysql/bin
[root@localhostbin]# ./mysql_install_db --user=mysql
[root@localhostbin]# chown -R root:mysql /usr/local/mysql
[root@localhostbin]# chown -R mysql /usr/local/mysql/var
(4)、初始化資料庫
[root@localhost~]# service mysqld start
[root@localhost~]# mysqladmin -u root password “pwd@123”
3. 安裝PHP環境
較新版本(如5.3)的PHP已經自帶FPM(FastCGI Process Manager,FastCGI程序管理器)子產品,用來對php解析執行個體進行管理、優化解析效率。單伺服器的LEMP架構經常使用這種方式,是以在編譯PHP的時候應添加“—enable-fpm”以啟用此子產品。
以源碼包php-5.3.6為例:
(1)、編譯安裝PHP
[root@localhost ~]# tar zxf php-5.3.6.tar.gz
[root@localhost ~]#cd php-5.3.6/
[root@localhost php-5.3.6]# ./configure --prefix=/usr/local/php5 --with-gd --with-zlib --with-mysql=/usr/local/mysql --with-config-file-path=/usr/local/php5 --enable-mbstring --enable-fpm
--prefix=/usr/local/php5 指定PHP安裝目錄
–with-config-file-path=/usr/local/php/etc 指定php.ini位置
–with-mysql=/usr/local/mysql mysql安裝目錄,打開對mysql的支援
–with-gd 打開gd庫的支援
–enable-mbstring 多位元組,字元串的支援
–enable-fpm 打上php-fpm 更新檔後才有這個參數,cgi方式安裝的啟動程式
–with-zlib-dir 打開zlib庫的支援
[root@localhost php-5.3.6]#make && make intall
(2)、安裝後的調整
[root@localhost php5-3.6]# cp php.ini-development /usr/local/php5/php.ini
[root@localhost php5-3.6]#ln -s /usr/local/php5/bin/* /usr/local/bin/
[root@localhost php5-3.6]#ln -s /usr/local/php5/sbin/* /usr/local/sbin/
(3)、安裝ZendGuardLoader
[root@localhost ~]#tar zxf ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz
[root@localhost ~]# cd ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x
[root@localhost php-5.3.x]#cp ZendGuardLoader.so /usr/local/php5/lib/php.ini
[root@localhost php-5.3.x]# vi /usr/local/php5/php.ini
添加内容:
zend_extension=/usr/local/php5/lib/php/ZenGuardLoader.so
zend_loader.enable=1
4. 配置nginx支援PHP環境
如果讓nginx能夠解析PHP網頁,有兩種方法可以選擇:一種是讓nginx充當中介,将通路PHP頁面的web請求交給其他LEMP去處理;另一種是通過使用PHP的FPM子產品來實作。
(1)、啟用php-fpm程序,以便于監聽PHP解析請求。建立php-fpm.conf檔案,并修改其中的PID檔案、運作使用者、服務數(程序數量)等相關設定,然後啟動php-fpm程式即可。(預設監聽本機的9000端口)
[root@localhost ~]#cd /usr/loca/php5/etc/
[root@localhost etc]# cp php-fpm.conf.default php-fpm.conf
[root@localhost etc]# vi php-fpm.conf
…….省略部分資訊
pid = run/php-fpm.pid //确認pid檔案位置
user = nginx //運作使用者
group = nginx //運作組
pm.start_servers = 20 //啟動時開啟的程序數
pm.min_spare_servers = 5 //最少空閑程序數
pm.max_spare_servers = 35 //最多空閑程序數
[root@localhost etc]# /usr/local/sbin/php-fpm
檢視是否被監聽,如被監聽則會顯示
[root@localhost etc]# netstat -anpt | grep php-fpm
(2)、修改nginx服務腳本,以便于在啟動/停止nginx伺服器時php-fpm程序也會自動啟動/停止。
[root@localhost ~]# vi /etc/init.d/nginx
……省略部分資訊
PROG_FPM=“/usr/local/sbin/php-fpm”
PIDF_FPM=“/usr/local/php5/”
case “$1” in
start)
$PROG -c $CONF
$PROG_FPM
kill -s QUIT $(can $PIDF) //根據PID殺死程序
kill -s QUIT $(cat $PIDF_FPM) //根據PID終止pid-fpm程序
(3)、配置nginx支援PHP解析
無論是将PHP頁面交給LAMP解析,還是調用本機的php-fpm程序進行解析,都需要在“server { }”配置段中添加location設定,以便于指定當通路.php網頁時采取何種操作。
[root@localhost ~]#vi /usr/local/nginx/conf/nginx.conf
server {
……
location ~ \.php$ { //通路.php頁面的配置段
proxy_pass IP位址:80; //Apache伺服器的監聽位址
}
}
第二種方法(調用本機的php-fpm程序),使用的配置語句如下所示。在conf/目錄下的fastcgi.conf檔案中已經包含必需的設定,可通過include語句添加進來。
server {
location ~ \.php$ { //通路php頁面的配置段
root /var/www/benet; //PHP網頁文檔根目錄
fastcgi_pass 127.0.0.1:9000; //php-fpm的監聽位址
fastcgi_index index.php; //PHP首頁檔案
include fastcgi.conf; //包括fastcgi.conf樣本配置
}
5. PHP頁面通路測試
[root@localhost ~]#vi /var/www/benet/test.php
<?php
$link=mysql_connect(‘localhost’ , ‘root’, ‘pwd123’ ); //連接配接MySQL資料庫
If ($link) echo “<h1>successful</h1>”; //連接配接成功時的回報消息
Mysql_close( ); //關閉資料庫連接配接
?>
LEMP平台部署web應用
LEMP平台與LAMP平台是非常相似的,差別主要在于所用WEB服務軟體的不同, 而這與使用PHP開發的WEB應用程式并無太大關系,是以PHP應用的部署方法也是類似的,
下面以“天空網絡電影系統(簡稱SKYUC)”為例介紹在LEMP平台中的部署過程。
釋放并部署程式代碼:
1. 下載下傳并部署程式代碼
[root@localhost ~]#tar jxf SKYUC_Free_For_PHP5.3.tar.bz2
[root@localhost ~]#mv SKYUC_Free_For_PHP5.3/wwwroot /var/www/benet/skyuc/
[root@localhost ~]#cd /var/www/benet/skyuc/
[root@localhost ~]#chown -R nginx:nginx admincp/ data/ templates/ upload/
2. 建立資料庫
建立資料庫skyucdb,授權使用者runskyuc。
[root@localhost ~]#mysql -u root -p
Enter password: //驗證root使用者密碼
mysql>create database skyucdb;
mysql>grant all on skyucdb.* to runskyuc@localhost identified by “sky@uc123”;
3. 安裝web應用
[root@localhost ~]#cd /var/www/benet./skync/
[root@localhost skync]# mv install install.lock
[root@localhost ~]#chmod 600 install.lock
4. 通路web應用系統
通路http://www.benet.com/skyuc,可以看到“天空網絡電影系統”站點首頁,通過http://www.benet.com/skyuc/admincp以管理者賬号登入背景進行管理。