PHP+FastCGI+Nginx配置PHP運行環境,fastcginginx
CGI的英文全稱為Common Gateway Interface(公用網關介面),是Nginx和動態指令碼程式的橋樑,Nginx通過FastCGI介面將動態請求發送給FastCGI,FastCGI中的Wrapper進程產生一個線程,將請求交給指令碼解釋程式執行,然後通過原來的socket將解釋執行後的結果原路返回給Nginx,之後Nginx將結果交給用戶端。
Nginx是通過通訊端檔案socket來將動態請求發送給wrapper,使用的是Tcp協議。wrapper通過CGI介面來接受請求。這樣web伺服器和解釋程式之間完全可以獨立開發,這樣避免瞭解釋程式直接調用伺服器的介面而導致的出錯和崩潰以及安全性問題。而且可以使Nginx專心處理靜態頁面請求和轉寄動態請求,而將指令碼解譯器安裝在另一台伺服器,使伺服器的壓力得到分攤。
CGI是作為PHP程式的補丁開發的,安裝PHP首先安裝其所依賴的庫,之後在編譯配置參數時加入對CGI的支援--enable-fpm --enable-cgi等選項。編譯PHP的擴充模組,需要用到php中的phpize工具用來產生模組編譯時間的configure檔案,如果運行phpize時無法產生configure檔案,原因有:沒有安裝autoconf軟體包。
php-fpm進程的設定檔為/usr/local/php/etc/php-fpm.conf 可以對php-fpm進行相應的配置。
Nginx配置支援fastcgi:
location ~ \.php${ root html; fastcgi_pass unix:/tmp/fastcgi.soke //通過通訊端檔案和cgi建立聯絡,該檔案在php-fpm.conf中設定 fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME html$SCRIPT_FILE_NAME;設定參數 include fastcgi_params; //匯入fastcgi參數設定檔,該檔案在nginx安裝時自動產生。 }
對於PHP、Nginx 、FastCGI
Nginx提供web服務,類似Apache、IIS和lighthttp;
web服務如果收到php檔案請求就將請求轉給php處理,返回處理結果;
FastCGI是php的一種運行模式,除此之外還可以以CGI或者ISAPI模式運行。
另外,如果你是用windows平台,建議使用 Apache+PHP+Mysql,簡單些,如果非要和微軟的IIS扯上關係,可能會比較麻煩,至少我這樣認為;如果使用Linux平台,建議使用 Nginx+PHP+Mysql,PHP5.3已內建php-fpm,安裝使用都很方便。
Windows平台也可以使用Nginx,需要的話再聯絡,正在使用,現成的。我現在使用Linux+Nginx+PHP+Mysql+Postgresql+Mongodb 。
這段時間看了一下對於用Apache或Nginx搭配fastcgi來運行php的資料,資料上說“用了fastcgi後,PHP解釋程式
不需要重啟伺服器,我開發的設定就是在win2003+apache+php+fastcgi 上,沒有發生過延時生效的情況。而且需要注意的是載入記憶體不是php檔案本身,而是解譯器,php解譯器每一次開啟釋放都會耗費系統資源,原來的多進程變成了輕量級的進程去除了頻繁的解譯器載入卸載,減輕了系統壓力而已,這跟php檔案更新不衝突。
http://www.bkjia.com/PHPjc/860469.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/860469.htmlTechArticlePHP+FastCGI+Nginx配置PHP運行環境,fastcginginx CGI的英文全稱為Common Gateway Interface(公用網關介面),是Nginx和動態指令碼程式的橋樑,Nginx通過FastCG...