寫在前面php
centos6默認安裝的httpd2.2是不支持fcgi模式的,那麼如何在6上實現fpm模式呢,這裏須要編譯安裝httpd2.4(具體步驟參見以前的博文)。html
前提:mysql
編譯安裝httpd2.4sql
二進制安裝mariadb5.5數據庫
yum 安裝相關包組bzip2-devel,libxml2-devel,libmcrypt-devel(epel源)express
編譯安裝phpvim
]#tar xvf php-5.6.31.tar.xz ]#cd php-5.6.31 ./configure \ --prefix=/app/php5 \ --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/php5 \ --with-config-file-scan-dir=/etc/php5.d \ --with-bz2 ]#make -j 4 && make install
實現php的配置文件和服務腳本
centos
]#mkdir/etc/php5 ]#cd php-5.6.30/ ]#cp php.ini-production /etc/php5/php.ini ]#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 --list php-fpm php-fpm 0:off 1:off 2:on 3:on 4:on 5:on 6:off
配置環境api
]#vim /etc/profile.d/httpd24.sh export PATH=/app/php5/bin/:/usr/local/mysql/bin/:/app/httpd24/bin:$PATH <===httpd和mysql都是編譯安裝的,環境都配置在這裏了。 ]#. /etc/profile.d/httpd24.sh
編輯php配置文件緩存
]#cd /app/php5/etc ]#cp php-fpm.conf.default php-fpm.conf <===一些端口信息能夠在配置。
修改httpd24的配置文件
]#vim /etc/httpd24/httpd.conf LoadModule proxy_module modules/mod_proxy.so <===取消兩行的註釋 LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps ProxyRequests Off <===關閉正向代理 ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/app/httpd24/htdocs/$1 <IfModule dir_module> DirectoryIndex index.php index.html <===添加index.php </IfModule> ]#service httpd24 restart
測試
]#vim /app/httpd24/htdocs/index.php <?php $mysqli=new mysqli("localhost","root","centos"); if(mysqli_connect_errno()){ echo "鏈接數據庫失敗!"; $mysqli=null; exit; } echo "鏈接數據庫成功!"; $mysqli->close(); phpinfo(); ?>
]#ab -c 10 -n 100 Time per request: 14.981 [ms] (mean) Time per request: 1.498 [ms] (mean, across all concurrent requests) Transfer rate: 45934.30 [Kbytes/sec] received
能夠看到網站性能比php7要稍微差一些,不過這裏支持php5支持加速器,這裏咱們介紹一下加速器是什麼?
php的加速器
基於PHP的特殊擴展機制如opcode緩存擴展也能夠將opcode緩存於php的共享內存中,從而能夠讓同一段代碼的後續重複執行時跳過編譯階段以提升性能。這些加速器並不是真正提升了opcode的運行速度,而僅是經過分析opcode後並將它們從新排列以達到快速執行的目的
常見的php加速器有:
1.APC (Alternative PHP Cache):遵循PHP License的開源框架,PHP opcode緩存加速器,目前的版本不適用於PHP 5.4
項目地址http://pecl.php.net/package/APC
2.eAccelerator:源於Turck MMCache,早期的版本包含了一個PHP encoder和PHP loader,目前encoder已經不在支持。項目地址http://eaccelerator.net/
3.XCache:快速並且穩定的PHP opcode緩存,通過嚴格測試且被大量用於生產環境。項目地址:http://xcache.lighttpd.net/,收錄EPEL源
4.Zend Optimizer和Zend Guard Loader:Zend Optimizer並不是一個opcode加速器,它是由Zend Technologies爲PHP5.2及之前的版本提供的一個免費、閉源的PHP擴展,其可以運行由Zend Guard生成的加密PHP代碼或模糊代碼。而Zend Guard Loader則是專爲PHP5.3提供的相似於Zend Optimizer功能的擴展。項目地址http://www.zend.com/en/products/guard/runtime-decoders
5.NuSphere PhpExpress:NuSphere的一款開源PHP加速器,它支持裝載經過NuSphere PHP Encoder編碼的PHP程序文件,並可以實現對常規PHP文件的執行加速。項目地http://www.nusphere.com/products/phpexpress.htm
這裏咱們着重介紹一下XCache。
安裝方法
1.rpm包:來自epel源
2.編譯安裝
rpm包就無需多說了,咱們介紹一下編譯安裝
前提
1.官網下載包:http://xcache.lighttpd.net/wiki/ReleaseArchive
2.安裝包組:php-devel
步驟:
]#tar xvf xcache-3.2.0.tar.bz2 cd xcache-3.2.0 ]#phpize <===來自於php-devel ]#./configure --enable-xcache --with-php-config=/app/php5/bin/php-config ]#make && make install ]#mkdir /etc/php5.d/ ]#cp xcache.ini /etc/php5.d/ ]#vim/etc/php5.d/xcache.ini extension = /app/php5/lib/php/extensions/no-debug-non-zts-20131226/xcache.so <===這個路徑在編譯完成時會提示,須要注意 ]#service php-fpm restart
測試
]#ab -c 10 -n 100 Time per request: 19.222 [ms] (mean) Time per request: 1.922 [ms] (mean, across all concurrent requests) Transfer rate: 35799.69 [Kbytes/sec] received
刷新頁面能夠看到已經加速了,經過測試網站性能比以前有個明顯的提高。