天天看點

LEMP架構及應用部署

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以管理者賬号登入背景進行管理。