程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP+FastCGI+Nginx配置PHP運行環境,fastcginginx

PHP+FastCGI+Nginx配置PHP運行環境,fastcginginx

編輯:關於PHP編程

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文件更新不沖突。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved