PHP源码安装及配置——以fastCGI的方式与httpd整合
? ? 在前一篇博文中介紹了LAMP的安裝及配置。這里專門介紹PHP以fastCGI的方式與httpd整合的情況下,具體如何編譯及配置。而且假定httpd、mysql均如前一篇博文介紹的安裝配置完畢。php也采取一樣版本的源碼包php-5.6.1.tar.bz2。
1. ?編譯安裝php
# tar xf php-5.6.1.tar.bz2
# cd php-5.6.1
# ./configure --prefix=/usr/local/php --enable-sockets --enable-mbstring --enable-xml --enable-fpm --with-bz2 --with-openssl --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-mcrypt --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-config-file-path=/etc/php --with-config-file-scan-dir=/etc/php.d
# make && make install
注:編譯時請確保機器的內存大于1G,或者在./configure 的選項中加上“--disable-fileinfo”,否則可能出現編譯失敗的情況。
2. ?為php提供配置文件
# cp php.ini-production /etc/php.ini
3. ?配置php-fpm
a) 為php-fpm提供配置文件
? ? ?# cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
b) 編輯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
c) 為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
4. ?啟動php-fpm服務,測試運行狀態
# service php-fpm start
# netstat -tnlp | grep php-fpm
默認情況下,fpm監聽在127.0.0.1的9000端口
5. ?修改httpd的主配置文件httpd.conf
a) 啟用httpd的相關模塊
? ? LoadModule proxy_module modules/mod_proxy.so
? ? LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
b) 在相應的位置添加如下行
? ? AddType application/x-httpd-php ?.php
? ? AddType application/x-httpd-php-source ?.phps
c) 修改DirectoryIndex 的定義為:
? ? DirectoryIndex ?index.php ?index.html
6. ?配置虛擬主機支持使用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進行了封裝,不需要手動指定。
舉例:
<VirtualHost *:80>
? ?DocumentRoot "/www/htdocs/test.com"
? ?ServerName www.test.com
? ?ServerAlias test.com
? ?ProxyRequests Off
? ?ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/www/htdocs/test.com/$1
? ?<Directory "/www/htdocs/test.com">
? ? ? ?Options none
? ? ? ?AllowOverride none
? ? ? ?Require all granted
? ?</Directory>
</VirtualHost>
轉載于:https://blog.51cto.com/deshanrenjian/1561648
總結
以上是生活随笔為你收集整理的PHP源码安装及配置——以fastCGI的方式与httpd整合的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hibernate annotation
- 下一篇: ftp上传和下载命令