企業WEB服務器LNMP詳解

   部署LNMP和部署LAMP方法是一樣的,只不過是WEB服務器軟件換了而已,這裏使用的WEB服務器軟件就是一篇文章中所部署的Nginx,所謂的LNMP也就是Linux+Nginx+Mysql+PHP。之所以使用LNMP是因爲它是一個高性能的動態網站平臺,在某些領域比LAMP還要出色,那麼接下來我們就來部署一下LNMP環境吧。

部署環境:

操作系統:rhel6.0_x64

Nginx:nginx-1.0.8.tar.gz

Mysql:mysql-5.1.55.tar.gz

PHP:php-5.3.6.tar.gz


部署LNMP一共分爲以下幾個步驟:

一、安裝Linux

這個大家都會,就不囉嗦了,不會的可以參考作者相關文章,有詳細介紹。


二、安裝Nginx

作者上一篇文章就詳細介紹瞭如何安裝Nginx,大家如果不會的可以參考作者上一篇文章,作者這裏就不在詳細敘述了。


三、安裝Mysql數據庫

1、編譯安裝Mysql

[root@web /]#tar zxf /usr/src/mysql-5.1.55.tar.gz
[root@web /]#cd /usr/src/mysql-5.1.55
[root@web mysql-5.1.55]#./configure --prefix=/usr/src/mysql --with-charset=utf8 --with-collation_general_ci --with-extra-charsets=gbk,gb2312
[root@web mysql-5.1.55]#make && make install

注意:上述配置參數解釋如下:

--with-charset:指定默認使用的字符集編碼;

--with-collation:指定默認使用的字符集校對規則,utf8_general_ci是適用於UTF-8字符集的通用規則;

--with-extra-charsets:指定額外支持的其他字符集編碼。

2、優化調整Mysql服務:

[root@web mysql-5.1.55]#cp -p support-files/my-medium.cnf /etc/my.cnf
[root@web mysql-5.1.55]#cp support-files/my-server /etc/init.d/mysqld
[root@web mysql-5.1.55]#chmod a+x /etc/init.d/mysqld
[root@web mysql-5.1.55]#ln -s /usr/local/mysql/bin/* /usr/local/bin/
[root@web mysql-5.1.55]#ln -s /usr/local/mysql/lib/mysql/* /usr/lib/
[root@web mysql-5.1.55]#ln -s /usr/local/mysql/include/mysql/* /usr/include/

3、創建Mysql用戶以及初始化Mysql數據庫:

[root@web mysql-5.1.55]#useradd -M -u 27 -s /sbin/nologin mysql
[root@web mysql-5.1.55]#cd /usr/local/mysql/bin
[root@web bin]#./mysql_install_db --user=mysql
[root@web bin]#chown -R root:mysql /usr/local/mysql/
[root@web bin]#chown -R mysql /usr/local/mysql/var/


4、啓動Mysql服務,併爲root用戶設置密碼

[root@web bin]#service mysqld start
[root@web bin]#mysqladmin -u root -p password ‘pwd@123’


四、安裝PHP解析環境

   較新版本(如5.3)的PHP已經自帶FPM(fastCGI  process  manager,FastCGI進程管理器)模塊,用來對PHP解析實例進行管理,優化解析效率,因此在配置PHP編譯選項時應添加”--enable-fpm”以啓用此模塊。爲了提高PHP解析效率,建議將相應版本的ZendGuardLander也裝上。

1、解壓並配置PHP

[root@web /]#tar zxf /usr/src/php-5.3.6.tar.gz
[root@web /]#cd /usr/src/php-5.3.6
[root@web php-5.3.6]#./configure --prefix=/usr/local/php5 --with-gd --with-zlib -with-mysql=/usr/local/mysql --with-config-file=/usr/local/php5 --enable-mbstring --enable-fpm

注意:配置如果“configure:error: libpng.(a|so) not found.”錯誤。

解決方法:

根據報錯發現是因爲libpng.solibpng.a找不到,檢查libpng的相關軟件是否已經安裝,如果已安裝,需要將“/usr/lib64/libpng*”庫文件拷貝到“/usr/lib”下。執行如下命令:

[root@web /]#cp -frp /usr/lib64/libpng* /usr/libyuanyi

原因:因爲configure一般的搜索編譯路徑爲/usr/lib/下,而x64位的系統默認在“/usr/lib64”下,因此需要拷貝到“/usr/lib”目錄下。

如果報configure: error: libjpeg.(a|so) not found錯誤解決方法和上面的解決方法類似。

2、編譯安裝PHP,並配置安裝後的調整

[root@web php-5.3.6]#make && make install
[root@web php-5.3.6]#cp php.ini-development /usr/local/php5/php.ini
[root@web php-5.3.6]#ln -s /usr/local/php5/bin/* /usr/loacl/bin
[root@web php-5.3.6]#ln -s /usr/local/php5/sbin/* /usr/local/sbin

3、安裝ZendGuardLander

注:若RHEL664位系統,該軟件得到其官網下載64位的相應軟件包,若用32位的就會報錯。下載地址:http://www.zend.com/en/products/guard/downloads

[root@web /]#tar zxf /usr/src/ZendGuardLoader-php-5.3-linux-glibc23-i386.tar.gz
[root@web /]#cd ZendGuardLoader-php-5.3-linux-glibc23-i386/php-5.3.x/
[root@web /]#cp ZendGuardLoader.so /usr/local/php5/lib/php/

修改php.ini文件,添加如下內容

[root@web /]#vim /usr/local/php5/php.ini
...//省略部分內容
zend_extension=/usr/local/php5/lib/php/ZendGuarLoader.so
zend_loader.enable=1

4、配置Nginx支持PHP環境

   若要讓Nginx能夠解析PHP網頁,有兩種方法可以選擇;其一,充當中介,將訪問PHP頁面的WEB請求轉交給其他服務器(LAMP)去處理;其二,通過使用PHPFPM模塊來調用本機的PHP環境,在此作者選擇後者。

   如果選用FPM方式,則需要先啓動php-fpm進程,以便監聽PHP解析請求。參考範例建立php-fpm.conf配置文件,並修改其中的PID文件、運行用戶、服務數(進程數量)等相關設置,然後啓動php-fpm程序即可(默認監聽本機的9000端口)

[root@web /]#cd /usr/local/php5/etc/
[root@web etc]#cp php-fpm.conf.default php-fpm.conf
[root@web etc]#vim php-fpm.conf
...//省略部分內容                 #修改如下內容
pid = run/php-fpm.pid
user = nginx
group = nginx
pm.start_servers = 20
pm.min_spare_servers = 5
pm.max_spare_servers = 35

修改完成後,啓動php-fpm,並查看地址監聽。

[root@web /]#/usr/local/sbin/php-fpm
[root@web /]#netstat -anpt | grep php-fpm

5、修改nginx啓動腳本,使php-fpm隨nginx啓動而啓動


[root@web /]#vim /etc/init.d/nginx
#!/bin/bash
# chkconfig: 2345 99 20
# description: Nginx service Control Script
cmd="/usr/local/naginx/sbin/nginx"
pid="/usr/local/nginx/logs/nginx.pid"
fpm_cmd="/usr/local/sbin/php-fpm"      #添加php-fpm
fpm_pid="/usr/local/php5/var/run/php-fpm.pid"    #添加php-fpm.pid
case "$1" in
start)
    $cmd
    $fpm_cmd      #添加fpm_cmd
    ;;
stop)
    kill -s QUIT $(cat $pid)
    kill -s QUIT $(more $fpm_pid)   #添加fpm_pid
    ;;
restart)
    $0 stop
    $0 start
    ;;
reload)
    kill -s HUP $(cat $pid)
    ;;
*)
    echo "Usage: $0 {start|stop|restart|reload}"
    exit 1
esac

這樣一來,一旦啓動或關閉nginx服務,php-fpm程序也會隨之啓動或關閉,不需要額外再啓動或關閉php-fpm。

6、配置Nginx支持PHP解析

   無論是將PHP頁面交給LAMP服務器去解析,還是調用本機的php-fpm進程進行解析,都需要在”server{}”配置段中添加location設置,以便指定當訪問.php面頁時採取何種操作。

方法一:轉交給其他WEB服務器處理,例如:交給IP地址爲192.168.0.200LAMP服務器處理,從而實現由Nginx負責靜態頁面,LAMP負責動態頁面的分離效果。

server  {
…… //省略部分信息
    location  ~  \.php$  {                       //訪問.php頁面的配置段
          proxy_pass   http://192.168.0.200:80;  //APACHE服務器的監聽地址
          }
    }

上面這種寫法只是發送以.php爲後綴的頁面訪問請求給其他WEB服務器,如果有其格式的文件訪問(如:htmljpg等)就會出問題。訪問不了了。

方法二:調用本機的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樣本配置
  }
}

本文檔中作者選擇的是第二種方法,完成修改後重新加載nginx服務即可生效。

作者Nginx配置文中整個server段的配置內容如下:

server {
    listen 80;
    server_name www.benet.com;
    charset utf-8;
    access_log logs/benet.access.log main;
    location /{
        root /var/www/benet/;
        index index.html index.php;
        }
    location ~ \.php$ {
        root /var/www/benet;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi.conf;
        }
    }
[root@web /]service nginx restart

7、添加一個測試網頁,檢測是否支持PHP解析

   在PHP文檔根目錄下創建一個測試網頁,以便測試PHP語名能否正常解析,以及能否訪問MYSQL數據庫。測試頁內容如下

[root@web /]vim /var/www/benet/index.php
<?php
$link=mysql_connect('localhost','root','pwd@123');
if($link) echo "sucess!!!";
mysql_close();
?>

8、訪問測試網頁,看看是否連接成功。

005924444.jpg

   至此LNMP換機已經搭建完成了,現在還流行一種WEB平臺的搭建方法,叫做LNMMP。它是結合Memcached緩存系統實現高效的用戶訪問效率的WEB服務器解決方案。大家有興趣可以自己去研究研究。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章