新聞中心
本文操作環(huán)境:Windows7系統(tǒng)、php7.1版、DELL G3電腦

瀾滄網(wǎng)站建設公司創(chuàng)新互聯(lián)建站,瀾滄網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為瀾滄上1000家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設要多少錢,請找那個售后服務好的瀾滄做網(wǎng)站的公司定做!
FastCGI怎么安裝PHP?Nginx與PHP(FastCGI)的安裝、配置和優(yōu)化
什么是FastCGI
FastCGI是一種可伸縮的、高速的在http server和動態(tài)腳本語言間通信的接口。FastCGI也被眾多腳本語言支持,包括PHP。
FastCGI是從CGI發(fā)展而來的。FastCGI接口方式采用C/S結構,可以將HTTP服務器和腳本解析服務器分離開,同時在腳本解析服務器上啟動一個或多個腳本解析守護進程。
當HTTP服務器每次遇到動態(tài)城區(qū)時,直接交付給FastCGI進程執(zhí)行,然后返回結果給瀏覽器,提高了系統(tǒng)的整體性能。
Nginx+FastCGI運行原理
Nginx并不支持對外部程序的直接調(diào)用或解析,所有外部程序都要通過FastCGI接口來調(diào)用。為了調(diào)用CGI程序,還需要一個FastCGI的wrapper,可以理解為用于啟動另一個程序的程序。
這個wrapper綁定在某個固定的socket上,如端口或文件socket。當Nginx將CGI請求發(fā)送給socket時,通過FastCGI接口,wrapper接收到請求,派生一個新的線程,此線程調(diào)用解釋器或外部程序處理腳本并讀取返回數(shù)據(jù),接著wrapper將返回數(shù)據(jù)通過FastCGI接口傳給Nginx,最后Nginx再返回給客戶端。
spawn-fcgi與PHP-FPM
FastCGI接口在腳本解析服務器上啟動一個或多個守護進程動態(tài)解析腳本,這也成為FastCGI進程管理器,spawn-fcgi與PHP-FPM就是兩個進程管理器。
spawn-fcgi:是HTTP服務器lighttpd的一部分,目前已是獨立成為一個項目,一般與lighttpd配合使用來支持PHP。但是spawn-fcgi在高并發(fā)的時候會出現(xiàn)內(nèi)存泄漏甚至自動重啟FastCGI。
PHP-FPM:第三方的FastCGI進程管理器,它是作為PHP的一個補丁來開發(fā)的。在安裝過程中也需要和PHP源碼一起編譯,也就是說PHP-FPM被編譯到PHP內(nèi)核,因此性能方面更加優(yōu)秀。同時其處理高并發(fā)方面能力也好很多。
因為FastCGI的優(yōu)點是把動態(tài)語言和HTTP server分離開,所以Nginx與PHP/PHP-FPM經(jīng)常被部署到不通的服務器上,以分擔Nginx前端的壓力,使Nginx專注處理靜態(tài)請求,PHP/PHP-FPM解析PHP動態(tài)請求。
PHP與PHP-FPM安裝與優(yōu)化
下載php包:www.php.net,這里使用php-5.2.13.tar.gz
下載php-fpm包:php-fpm.org,這里使用php-5.2.13-fpm-0.5.13.diff.gz
配置安裝環(huán)境
需要的依賴包包括:
根據(jù)系統(tǒng)版本的不同,可能依賴的包也不同。
編譯安裝php和php-fpm
解壓縮php的源碼包并將php-fpm當做補丁打入php源碼中。
tar zxf php-5.2.13.tar.gzgzip -cd php-5.2.13-fpm-0.5.13.diff.gz | patch -d php-5.2.13 -p1
編譯安裝,同時啟動對FastCGI的支持,激活對FastCGI模式的fpm的支持。
cd php-5.2.13./configure --prefix=/usr/local/php --enable-fastcgi --enable-fpmmake && make install cp php-ini-dist /usr/local/php/lib/php.ini
配置與優(yōu)化php-fpm
php的主配置文件為php.ini;
php-fpm的主配置文件為php-fpm.conf,位于/usr/local/php/etc/下,是一個xml格式的文件,下面介紹幾個常用的標簽:
127.0.0.1:9000 :表示配置FastCGI進程監(jiān)聽的IP地址和端口,默認為本地的9000;0 :表示是否顯示php錯誤信息,默認為0表示不顯示,設置為1表示顯示錯誤信息;nobody :表示設置運行FastCGI進程的用戶,需要和nginx配置文件中的用戶一致;nobody :表示設置運行FastCGI進程的用戶組,需要和nginx配置文件中的用戶組一致;5 :設置FastCGI的進程數(shù),官方建議小于2G內(nèi)存,可以只開啟64個進程;4G以上可以開啟200個進程;0s :設置FastCGI執(zhí)行腳本的時間,默認0s,意味著無限執(zhí)行下去;1024 :設置php-fpm打開文件描述符的限制,默認1024,這個值最好要和內(nèi)核打開的文件數(shù)一致;500 :設置每一個進程最多處理多少個請求后會被關閉,默認500;127.0.0.1 :設置允許訪問FastCGI進程解析器的IP地址,如果不設置IP地址,則無法接受nginx傳來的php解析請求;
管理FastCGI進程
啟動FastCGI進程的方法如下:
/usr/local/php/sbin/php-fpm start
參數(shù)的含義如下:
查看FastCGI進程
FastCGI進程啟動后,可以通過命令“ps”或者“netstat”查看到相關進程信息,默認監(jiān)聽9000端口;
netstat -antlp | grep 9000ps -ef | grep php-cgi
配置Nginx來支持PHP
Nginx本身不會對PHP進行解析,要想讓Nginx解析PHP請求,需要將PHP頁面的請求交給FastCGI進程監(jiān)聽的IP地址和端口。Nginx通過反向代理的功能實現(xiàn)對PHP的解析。下面對Nginx解析PHP進行配置實例。
配置實例
server {
server_name www.ixdba.net ixdba.net;
location / {
index index.html index.php;
root /web/www/www.ixdba.net;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME html$fastcgi_script_name;
include fastcgi_params;
}
}
location指令,將以“.php”結尾的文件都交給“127.0.0.1:9000”來處理,這里的IP和端口就是FastCGI進程監(jiān)聽的IP和端口。
fastcgi_param指令,指定放置php動態(tài)程序的主目錄,也就是$fastcgi_script_name前的路徑,這里是/usr/local/nginx/html。
fastcgi_params文件是FastCGI進程的一個參數(shù)配置文件,安裝Nginx后默認生成,這里將它包含進來。
啟動nginx
/usr/local/nginx/sbin/nginx
測試Nginx對PHP的解析功能
在/usr/local/nginx/html,也就是上面的php動態(tài)程序主目錄下,創(chuàng)建一個phpinfo.php文件,內(nèi)容如下:
然后通過瀏覽器訪問http://www.ixdba.net/index.html,將會顯示Nginx歡迎頁;
瀏覽器訪問http://www.ixdba.net/phpinfo.php,會出現(xiàn)php安裝及功能列表信息;
優(yōu)化Nginx中FastCGI
添加一些優(yōu)化指令可以讓php環(huán)境高效穩(wěn)定的運行,下面給出一些實例,添加到nginx配置文件的http層級:
為fastcgi緩存指定文件路徑,目錄結構等級、關鍵字區(qū)域存儲時間和非活動刪除時間;
fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2 keys_zone=Test:10m inactive=5m;
連接到后端fastcgi的超時時間;
fastcgi_connect_timeout 300;
向fastcgi傳送請求的超時時間,是已經(jīng)完成兩次握手后向fastcgi傳送請求的超時時間;
fastcgi_send_timeout 300;
接收fastcgi應答的超時時間,是已經(jīng)完成兩次握手后接收fastcgi應答的超時時間;
fastcgi_read_timeout 300;
讀取fastcgi應答第一部分需要緩沖區(qū)的大??;
fastcgi_buffer_size 64k;
本地需要多少和多大的緩沖區(qū)來緩沖fastcgi的應答請求;
fastcgi_buffers 4 64k;
默認值為fastcgi_buffers的兩倍;
fastcgi_busy_buffers_size 128k;
寫入緩存文件時使用多大的數(shù)據(jù)塊,默認為fastcgi_buffers的兩倍;
fastcgi_temp_file_write_size 128k;
開啟fastcgi緩存并為其指定一個名稱,可以有效降低cpu負載,防止502錯誤。
fastcgi_cache TEST;
fastcgi_cache_valid指定應答代碼的緩存時間。
將200, 302的應答時間緩存1小時;
fastcgi_cache_valid 200 302 1h;
將301應答緩存一天;
fastcgi_cache_valid 301 1d;
其余應答緩存1分鐘;
fastcgi_cache_valid any 1m;
標題名稱:FastCGI怎么安裝PHP
轉載來源:http://m.biofuelwatch.net/article/cccdiii.html


咨詢
建站咨詢
