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
(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
注意:編譯完成後,會有一個相似於下圖所示的路徑,請把此路徑複製保存,配置文件裏要用到此項:
/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>
4、環境測試
lamp的安裝已經完成了,咱們弄個網站測試一下吧!
(1)、編輯虛擬主機:
(2)、新建joomla網站數據庫及用戶
(3)、安裝網站程序
(4)、使用httpd自帶的性能測試工具ab,測試一下服務器性能,參數和上次同樣:
ab -c 5 -n 50 http://www.wubinary.com/index.php
上次是2,此次是9,性能翻了4倍多,性能很強,有木有!!