fcgi模式編譯安裝LAMP+xcache

1、php的工做模式php

   php在lamp環境下共有三種工做模式:CGI模式、apache模塊、FastCGI模式。CGI模式下運行PHP,性能不是很好。做爲apache的模塊方式運行,在上一篇日誌中編譯安裝lamp已經介紹。FastCGI的方式和apache模塊的不一樣點在於:FastCGI方式PHP是一處獨立的進程,全部PHP子進程都由PHP的一個叫做php-fpm的組件負責管理;而apache模塊化方式運行的PHP,則是apache負責調用PHP完成工做。PHP的FastCGI方式性能要比apache模塊化方式強不少,今天咱們以FastCGI方式編譯安裝lamp。html


2、編譯環境及各軟件版本mysql

  如下爲本次編譯環境及各軟件版本:linux

linux web服務器
php mysql xcache
CentOS 6.4 httpd-2.4.9
php-5.4.26
mysql-5.5.33-linux2.6-x86_64 xcache-3.0.3

   xcache是一款PHP的加速器,用於提升PHP的執行效率。
web


3、編譯安裝LAMPsql

一、編譯安裝apache(請參考上一篇文章)數據庫

二、編譯安裝mysql(請參考上一篇文章)apache

三、FastCGI方式安裝phpvim

(1)、解決依賴關係centos

請配置好yum源後執行以下命令:

# yum -y groupinstall "Desktop Platform Development"
# yum -y install bzip2-devel libmcrypt-devel
# yum -y groupinstall "X Software Development"

若是想讓編譯的php支持mcrypt擴展,還需安裝如下軟件包:

libmcrypt-2.5.7-5.el5.i386.rpm
libmcrypt-devel-2.5.7-5.el5.i386.rpm
mhash-0.9.9-1.el5.centos.i386.rpm
mhash-devel-0.9.9-1.el5.centos.i386.rpm


(2)、編譯安裝php-5.4.26

# tar xf php-5.4.26.tar.bz2
# cd php-5.4.26
# ./configure --prefix=/usr/local/php --with-mysql=/usr/local/mysql --with-openssl --with-mysqli=/usr/local/mysql/bin/mysql_config --enable-mbstring --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --enable-xml  --enable-sockets --enable-fpm --with-mcrypt  --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --with-bz2

--enable-fpm:開啓php-fpm組件用於管理PHP

# make
# make intall


(4)、爲php提供配置文件,配置文件在軟件解壓後的目錄內:

cp php.ini-production /etc/php.ini


(5)、配置php-fpm,爲php-fpm提供SysV init腳本,並將其添加至服務列表:

# cp sapi/fpm/init.d.php-fpm  /etc/rc.d/init.d/php-fpm
# chmod +x /etc/rc.d/init.d/php-fpm
# chkconfig --add php-fpm
# chkconfig php-fpm on


(6)、爲php-fpm提供配置文件:

# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

編輯php-fpm的配置文件:

# vim /usr/local/php/etc/php-fpm.conf

配置fpm的相關選項爲你所須要的值,並啓用pid文件(以下最後一行):

pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pid = /usr/local/php/var/run/php-fpm.pid


(7)、接下來就能夠啓動php-fpm了:

# service php-fpm start

使用以下命令來驗正(若是此命令輸出有中幾個php-fpm進程就說明啓動成功了):

# ps aux | grep php-fpm

默認狀況下,fpm監聽在127.0.0.1的9000端口,也能夠使用以下命令驗正其是否已經監聽在相應的套接字:

# netstat -tnlp | grep php-fpm

wKioL1M2LtfjNEjKAAC9H5uhomY299.jpg


(8)、啓用httpd的相關模塊。在Apache httpd 2.4之後已經專門有一個模塊針對FastCGI的實現,此模塊爲mod_proxy_fcgi.so,它實際上是做爲mod_proxy.so模塊的擴充,所以,這兩個模塊都要加載:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so


(9)、配置虛擬主機支持使用fcgi,在相應的虛擬主機中添加相似以下兩行。

ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/PATH/TO/DOCUMENT_ROOT/$1


ProxyRequests Off:關閉正向代理

ProxyPassMatch:把以.php結尾的文件請求發送到php-fpm進程,php-fpm至少須要知道運行的目錄和URI,因此這裏直接在fcgi://127.0.0.1:9000後指明瞭這兩個參數,其它的參數的傳遞已經被mod_proxy_fcgi.so進行了封裝,不須要手動指定。

例如,你在地址欄上輸入的地址爲,http://www.wubinary.com/blog/admin/index.php,其實它是指向了另外一個地址,fcgi://127.0.0.1:9000/blog/admin/index.php。


(10)、編輯apache配置文件httpd.conf,讓apache能識別php格式的頁面,並支持php格式的主頁。

添加以下二行:

AddType application/x-httpd-php  .php
AddType application/x-httpd-php-source  .phps

定位至DirectoryIndex index.html 修改成:

DirectoryIndex  index.php  index.html


四、編譯安裝xcache

(1)、解壓軟件包

# tar xf xcache-3.0.3.tar.gz
# cd xcache-3.0.3


(2)、執行phpize,給PHP編譯一個新的模塊

# /usr/local/php/bin/phpize


(3)、編譯安裝

# ./configure --enable-xcache --with-php-config=/usr/local/php/bin/php-config
# make && make install

注意:編譯完成後,會有一個相似於下圖所示的路徑,請把此路徑複製保存,配置文件裏要用到此項:

wKiom1M2LHWQkv8iAAKG-Qh6ncA561.jpg


/usr/local/php/lib/php/extensions/no-debug-non-zts-20100525/


(4)、將xcache提供的樣例配置導入php.ini,xcache.ini文件在xcache的源碼目錄中:

# mkdir /etc/php.d
# cp xcache.ini /etc/php.d


(5)、接下來編輯/etc/php.d/xcache.ini,找到extension開頭的行,修改成以下行,使用剛纔複製的路徑:

extension = /usr/local/php/lib/php/extensions/no-debug-zts-20100525/xcache.so

注意:若是php.ini文件中有多條extension指令行,要確保此新增的行排在第一位。


(6)、新增虛擬主機測試:

<VirtualHost *:80>
    ServerAdmin admin@wubinary.com
    DocumentRoot "/var/www/html/wubinary.com"
    ServerName www.wubinary.com
    ServerAlias www.wubinary.com
    ErrorLog "logs/wubinary.com.error_log"
    CustomLog "logs/wubinary.com.access_log" common
    ProxyRequests Off
    ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/wubinary.com/$1
</VirtualHost>

wKiom1M2MEHwJcRnAAKGW0bnCxo311.jpg


4、環境測試

   lamp的安裝已經完成了,咱們弄個網站測試一下吧!

(1)、編輯虛擬主機:

wKioL1M2MT7C1il2AAHZwZwrfOE299.jpg


(2)、新建joomla網站數據庫及用戶

(3)、安裝網站程序

wKioL1M2MX2yDuLpAAMSCXtXJ8A354.jpg


(4)、使用httpd自帶的性能測試工具ab,測試一下服務器性能,參數和上次同樣:

ab -c 5 -n 50 http://www.wubinary.com/index.php

wKioL1M2Mi6BzJjaAAM_c9kCGfY460.jpg


上次是2,此次是9,性能翻了4倍多,性能很強,有木有!!

相關文章
相關標籤/搜索