版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、mod_php VS mod_fastcgi目錄什么是MOD_PHP和MOD_FASTCGI1工作原理1mod_php2mod_fastcgi3MOD_FACTCGI的三種配置方式4靜態(tài)配置5動(dòng)態(tài)配置5遠(yuǎn)程方式6PHP-FPM6性能測(cè)試8名稱(chēng)解釋8測(cè)試內(nèi)容8測(cè)試結(jié)果8FASTCGI配置項(xiàng)對(duì)性能的影響。11分析&結(jié)論13附錄14APACHE+MOD_FASTCGI+PHP搭建14什么是mod_php和mod_fastcgi在lamp體系中,對(duì)于apache端php的配置,我們最常用的就是mod_php, 它把PHP做為APACHE一個(gè)內(nèi)置模塊。讓apache http服務(wù)器本身能夠支持P
2、HP語(yǔ)言,不需要每一個(gè)請(qǐng)求就啟動(dòng)PHP解釋器來(lái)解釋PHP。和把webserver與php綁定起來(lái)的方式不同,fastcgi是HTTP服務(wù)器與你的或其它機(jī)器上的程序進(jìn)行“交談”的一種工具,相當(dāng)于一個(gè)程序接口。它可以接受來(lái)自web服務(wù)器的請(qǐng)求,解釋輸入信息,將處理后的結(jié)果返回給服務(wù)器(apache,lighty等)。mod_fastcgi就是在apache下支持fastcgi協(xié)議的模塊。工作原理在介紹這兩種模式的工作原理前,我們先了解一下php的架構(gòu)圖1 php架構(gòu)圖上面是php的架構(gòu)圖,從圖上可以看到, SAPI提供了一個(gè)和外部通信的接口,使得PHP可以和其他應(yīng)用進(jìn)行交互數(shù)據(jù)。php默認(rèn)提供了很
3、多種SAPI,常見(jiàn)的給apache的mod_php5,CGI,給IIS的ISAPI,還有Shell的CLI。對(duì)于一個(gè)基于apache的php應(yīng)用,其運(yùn)行流程可以簡(jiǎn)單歸結(jié)如下apache -> httpd -> mod_phpfastcgi -> sapi -> php我們下面提到的兩種工作方式就分別用到了mod_php5和cgi的sapi。mod_phpmod_php是在lamp體系中最常使用的工作方式,在這種模式下,php被編譯為apache的一個(gè)內(nèi)置模塊,在啟動(dòng)時(shí)加載。當(dāng)有一個(gè)php請(qǐng)求過(guò)來(lái)時(shí),直接在httpd進(jìn)程里完成php的解釋運(yùn)行,將結(jié)果返回。在php的sap
4、i中,有這樣一個(gè)函數(shù): sapi_cgibin_ub_write, 這個(gè)函數(shù)告訴了Zend,如何輸出數(shù)據(jù)。查看mod_php的sapi源碼,我們會(huì)發(fā)現(xiàn),這個(gè)函數(shù)直接調(diào)用了apache的ap_rwrite函數(shù)。所以,用mod_php,我們可以把php和apache看做一個(gè)模塊,兩者綁定在一起。其工作原理如下圖所示圖2 mod_php工作原理mod_fastcgi在說(shuō)明fastcgi之前,先了解一下普通cgi的工作流程:web server收到用戶請(qǐng)求,并把請(qǐng)求提交給cgi程序,cgi程序根據(jù)請(qǐng)求提交的參數(shù)作應(yīng)處理,然后輸出標(biāo)準(zhǔn)的html語(yǔ)句返回給web server,web server再返回給
5、客戶端,這就是普通cgi的工作原理。fastcgi是基于cgi架構(gòu)的擴(kuò)展,他的核心思想就是在web server和具體cgi程序之間建立一個(gè)智能的可持續(xù)的中間層,統(tǒng)管cgi程序的運(yùn)行,這樣web server只需要將請(qǐng)求提交給這個(gè)層,這個(gè)層再派生出幾個(gè)可復(fù)用的cgi程序?qū)嵗?,然后再把?qǐng)求分發(fā)給這些實(shí)例,這些實(shí)例是可控的,可持續(xù),可復(fù)用的, 因此一方面避免了進(jìn)程反復(fù)fork,另一方面又可以通過(guò)中間層的控制和探測(cè)機(jī)制來(lái)監(jiān)視這些實(shí)例的運(yùn)行情況,根據(jù)不同的狀況fork或者回收實(shí)例,達(dá)到靈活 性和穩(wěn)定性兼得的目的。modFastCGI的主要優(yōu)點(diǎn)是把動(dòng)態(tài)語(yǔ)言和web server分離開(kāi)來(lái)。這種技術(shù)允許把w
6、eb server和動(dòng)態(tài)語(yǔ)言運(yùn)行在不同的主機(jī)上,以大規(guī)模擴(kuò)展和改進(jìn)安全性而不損失生產(chǎn)效率。基于mod_fastcgi方式的php應(yīng)用,其典型工作流程如下圖3 mod_fastcgi工作原理從圖上可以看出, apache啟動(dòng)后,mod_fastcgi會(huì)在啟動(dòng)多個(gè)cgi程序,也就是php-cgi腳本。具體腳本的數(shù)目通過(guò)配置來(lái)指定。當(dāng)有http請(qǐng)求到來(lái)后,httpd進(jìn)程會(huì)選擇一個(gè)當(dāng)前空閑的一個(gè)php-cgi程序來(lái)執(zhí)行,執(zhí)行的方式和mod_php類(lèi)似,也是通過(guò)php-cgi提供的sapi完成交互。查看源碼,可以發(fā)現(xiàn)對(duì)于cgi的sapi,和mod_php不同,它是把結(jié)果輸出到fastcgi提供的stdo
7、ut上,fastcgi再將數(shù)據(jù)返回給httpd完成交互。mod_factcgi的三種配置方式基于mod_fastcgi的fastcgi應(yīng)用一共有三種配置方式:靜態(tài)、動(dòng)態(tài)和遠(yuǎn)程。他們通過(guò)apache配置中的偽指令來(lái)代替,對(duì)應(yīng)于三種方式的偽指令分別是FastCgiServer, FastCgiConfig, 以及FastCgiExternalServer。對(duì)于靜態(tài)和動(dòng)態(tài)這兩種方式,apache將通過(guò)mod_fastcgi自帶的進(jìn)程管理工具(fcgi-pm)來(lái)管理fastcgi應(yīng)用程序,也就是php-cgi。fcgi-pm在apache啟動(dòng)時(shí)就被自動(dòng)激活了。相對(duì)于前兩種,遠(yuǎn)程模式下,php-cgi不
8、由fcgi-pm來(lái)管理,apache不會(huì)去關(guān)心php-cgi程序的狀態(tài)。下面詳細(xì)說(shuō)一下三種配置方式靜態(tài)配置通過(guò)FastCGIServer 偽指令將文件名定義為靜態(tài) FastCGI 應(yīng)用程序。初始時(shí)需要指定啟動(dòng)的php-cgi進(jìn)程數(shù)目,默認(rèn)為1個(gè)。apache運(yùn)行過(guò)程中,如果靜態(tài)應(yīng)用程序?qū)嵗驗(yàn)槿魏卧蛩懒?,那么fcgi-pm將衍生另一個(gè)實(shí)例來(lái)替換。語(yǔ)法 FastCgiServer file name options 重要參數(shù)說(shuō)明idle-timeout n(30 秒)。在請(qǐng)求異常終止和事件記錄在 error LogLevel 前,所允許的 FastCGI 應(yīng)用程序不活動(dòng)秒數(shù)。僅當(dāng)存在與 Fas
9、tCGI 應(yīng)用程序的暫掛連接時(shí),該不活動(dòng)計(jì)時(shí)器才應(yīng)用。如果應(yīng)用程序在此期間不響應(yīng)隊(duì)列的請(qǐng)求,那么請(qǐng)求異常終止。如果與應(yīng)用程序的通信完成,但是與客戶機(jī)的通信未完成(緩存的響應(yīng)),那么超時(shí)不應(yīng)用。processes n(1)。在服務(wù)器初始化時(shí)衍生的應(yīng)用程序?qū)嵗龜?shù)。port n 無(wú)。應(yīng)用程序用于與 Web 服務(wù)器通信的 TCP 端口號(hào)(1-65535)。此選項(xiàng)使應(yīng)用程序可以從網(wǎng)絡(luò)中的其他機(jī)器訪問(wèn)。-socket 選項(xiàng)和 -port 選項(xiàng)是互斥的。socket filename unix sock文件名Restart-delay n(5 秒)。此應(yīng)用程序的失敗實(shí)例重新衍生之間的最小秒數(shù)。此延遲阻止中斷
10、的應(yīng)用程序使用過(guò)多系統(tǒng)資源。動(dòng)態(tài)配置在靜態(tài)配置中,我們初始就指定了要啟動(dòng)的php進(jìn)程數(shù)。和靜態(tài)的相反,動(dòng)態(tài)應(yīng)用程序根據(jù)需求啟動(dòng)。php應(yīng)用實(shí)例的數(shù)目根據(jù)當(dāng)前http請(qǐng)求數(shù)目動(dòng)態(tài)變化,進(jìn)程的管理也是通過(guò)fcgi-pm來(lái)完成。語(yǔ)法 FastCgiConfig option option .重要參數(shù)說(shuō)明和靜態(tài)方式相比,動(dòng)態(tài)配置的參數(shù)主要增加了以下幾個(gè)maxProcesses n 在任何時(shí)候允許運(yùn)行的最大動(dòng)態(tài) FastCGI 應(yīng)用程序?qū)嵗龜?shù)。minProcesses n 任何時(shí)候允許運(yùn)行,且無(wú)須由fcgi-pm(因沒(méi)有需求)殺死的最小動(dòng)態(tài) FastCGI 應(yīng)用程序?qū)嵗龜?shù)。 在dyn模式下,因?yàn)閒ast
11、cgi實(shí)例數(shù)目是動(dòng)態(tài)改變的。所以沒(méi)有靜態(tài)方式中process這個(gè)參數(shù)遠(yuǎn)程方式這種模式下,fastcgi實(shí)例和apache分離開(kāi)來(lái),這兩者可以分開(kāi)來(lái)部署。他們之間的通信通過(guò)tcp或者unix sock來(lái)完成。使用ext方式,fastcgi實(shí)例將不會(huì)由fcgi-pm來(lái)管理,而是獨(dú)立的運(yùn)行。語(yǔ)法 - FastCgiExternalServer 文件名 -host 主機(jī)名端口 -appConnTimeout nFastCgiExternalServer 文件名 -socket 文件名 -appConnTimeout n重要參數(shù)說(shuō)明idle-timeout n (30 秒) 在請(qǐng)求異常終止,并且事件記錄
12、之前,允許 FastCGI 應(yīng)用程序保持不活動(dòng)的秒數(shù)。只有當(dāng)與 FastCGI 應(yīng)用程序的連接暫掛時(shí),此不活動(dòng)定時(shí)器才適用。如果請(qǐng)求進(jìn)入應(yīng)用程序的請(qǐng)求隊(duì)列,而此應(yīng)用程序在此期間沒(méi)有響應(yīng)(通過(guò)寫(xiě)和刷新),則此請(qǐng)求將異常終止。如果與應(yīng)用程序的通信已完成,而與客戶機(jī)的通信尚未完成(響應(yīng)被高速緩存),則此超時(shí)不適用。host host:port 應(yīng)用程序用于與 Web 服務(wù)器通信的主機(jī)名或 IP 地址和 TCP 端口號(hào) (1-65535)。-socket 和 -host 選項(xiàng)是互斥的。 socket 文件名 無(wú)應(yīng)用程序用于與 Web 服務(wù)器通信的 UNIX 域套接字的文件名。此文件名相對(duì)于 FastC
13、giIpcDir。-socket 和 -port 選項(xiàng)是互斥的。php-fpm使用FastCGI,最主要優(yōu)點(diǎn)是把應(yīng)用和web server(apache)分離開(kāi)來(lái)。這樣允許把web server和動(dòng)態(tài)語(yǔ)言(php)運(yùn)行在不同的主機(jī)上,以大規(guī)模擴(kuò)展和改進(jìn)安全性而不損失效率。這樣的情況下,對(duì)于php-cgi程序,由于從apache中分離出來(lái),就需要一個(gè)單獨(dú)的工具來(lái)對(duì)這些進(jìn)程進(jìn)行管理,在stc和dyn兩種模式下,mod_fastcgi中自帶的fcgi-pm會(huì)充當(dāng)了這樣的角色。可是,ext模式下卻沒(méi)有。我們只能通過(guò)一個(gè)腳本靜態(tài)的啟動(dòng)n個(gè)實(shí)例,一旦進(jìn)程死掉,還需要手工重啟。當(dāng)然,你可以使用supervi
14、se來(lái)管理這些進(jìn)程,但是畢竟不那么靈活而且也僅僅一部份問(wèn)題。甚至于fcgi-pm,因?yàn)閷?shí)現(xiàn)的原因,其本身也有很多問(wèn)題,例如不太穩(wěn)定,壓力下出core,無(wú)法平滑的完成切換等。 基于上述的原因,我們需要一個(gè)穩(wěn)定可靠的進(jìn)程管理工具,就像lighty下的spwn-cgi。幸運(yùn)的是,出現(xiàn)了php-fpm。它是一個(gè)類(lèi)似于spwn-cgi的管理工具,可以和任何支持遠(yuǎn)端FastCGI的web server工作。在官方的手冊(cè)上,列舉了以下php-fpm所具有的特性:特性Php自帶的Spwn-cgiPhp-fpmphp守護(hù)程序: pid file, log file, setsid(), setuid(), se
15、tgid(), chroot()(-)(-)(+)進(jìn)程控制,可以平滑地重啟、重新載入配置和二進(jìn)制模塊而不丟失請(qǐng)求Php4 (-)Php5 只能平滑停止(-)(+)限制ip地址,可以滿足web server的要求php4 (-)php5.2.2 > (+)(-)(+)如果使用優(yōu)化器,在遇到opcode緩存隨機(jī)損壞的時(shí)候緊急重啟所有進(jìn)程(-)(-)(+)使用用不同的uid / gid / chroot / 環(huán)境變量,不同的 php.ini 選項(xiàng),不需要safe mode(-)(-)(+)記錄work process的stdout和stderr(-)(-)(+)如果set_time_limit
16、沒(méi)有起作用,強(qiáng)制結(jié)束過(guò)期進(jìn)程(-)(-)(+)特色功能 Error header、優(yōu)化的上傳支持、fastcgi_finish_request()另外,php-fpm還可以兼容zend Optimize,各種緩存優(yōu)化器。Php-fpm的安裝Php-fpm是以patch的方式安裝的,如果要使用它,你必須在安裝php前打上這個(gè)補(bǔ)丁。eg:gzip -cd php-5.2.6-fpm-0.5.9.diff.gz | patch -d php-5.2.6 -p1在configure時(shí)加上enable-fpm選項(xiàng)。安裝完php后,會(huì)有以下幾個(gè)文件$prefix/ext/php-fpm.conf$pref
17、ix/log/php-fpm.log$prefix/log/php-fpm.pid其中php-fpm.conf是配置文件,具體如何配置文件里有非常詳盡的注釋。最后,執(zhí)行./bin/php-cgi fpm &就可以了。另外,你也可以使用$prexif/sbin/php-fpm腳本來(lái)方便的維護(hù)。性能測(cè)試名稱(chēng)解釋abapache自測(cè)的性能測(cè)試工具,主要用于測(cè)試極限壓力:對(duì)于同一url每秒所能執(zhí)行的次數(shù)及響應(yīng)時(shí)間。myabbaidu開(kāi)發(fā)的壓力測(cè)試工具,區(qū)別于ab,其更主要的功能是測(cè)試指定壓力條件下機(jī)器的負(fù)載情況。eacc一種php加速器,主要是將php程序編譯后的結(jié)果緩存起來(lái)。加速php的執(zhí)行
18、,對(duì)性能有很大幅度的提升 ,更詳細(xì)的情況可以參見(jiàn)另一篇關(guān)于php緩存優(yōu)化的文檔 緩存優(yōu)化工具-php加速的利器etc、stc、dynmod_fastcgi運(yùn)行的模式,分別指遠(yuǎn)程、靜態(tài)和動(dòng)態(tài)模式測(cè)試內(nèi)容測(cè)試中我們將針對(duì)不同的運(yùn)行模式和頁(yè)面類(lèi)型進(jìn)行極限壓力測(cè)試及機(jī)器負(fù)載測(cè)試。同時(shí),我們還將測(cè)試使用緩存優(yōu)化和不使用緩存優(yōu)化下機(jī)器的表現(xiàn)情況。另外,由于我們的測(cè)試主要是對(duì)比兩種模式的性能差別,因此對(duì)于機(jī)器的硬件配置不是特別敏感,測(cè)試的時(shí)候只需要保證機(jī)器負(fù)載為0即可。測(cè)試結(jié)果l 最簡(jiǎn)單的php頁(yè)面壓力工具:mysql壓力情況:每秒1000次請(qǐng)求,并發(fā)數(shù)70。性能指標(biāo):cpu idle不同模式下機(jī)器idle
19、情況如下圖圖4最簡(jiǎn)單php頁(yè)面,1000/s請(qǐng)求 idle情況從圖上我們可以看出,測(cè)試最簡(jiǎn)單的php頁(yè)面時(shí),各種模式下性能幾乎沒(méi)有差別,且由于頁(yè)面非常簡(jiǎn)單,eacc的效果也基本沒(méi)有。l 復(fù)雜的php程序(2000行代碼+)壓力工具:mysql壓力情況:每秒400次請(qǐng)求,并發(fā)數(shù)70性能指標(biāo):cpu idle測(cè)試結(jié)果如下圖圖5復(fù)雜的php代碼,400/s壓力idle情況從圖上可以看出,在php代碼復(fù)雜的情況下,前面4中模式性能差別不大,mod_php略優(yōu),然后fastcgi動(dòng)態(tài)配置的方式在此情況下性能差距非常之大,idle直接降為0,同時(shí)雖然每秒是400次的壓力,其只能處理200次左右的請(qǐng)求。由于
20、php代碼很復(fù)雜,eacc的作用明顯體現(xiàn)出來(lái),使用緩存優(yōu)化后性能提升一倍以上。另外,還可以看出,eacc這樣的緩存優(yōu)化工具對(duì)于mod_php和fastcgi方式起到的作用基本相同,他們之間的性能差異和使用前維持相同。在上述情況下,如果不適應(yīng)fpm,fastcgi模式會(huì)出core,主要原因還在在于進(jìn)程管理的問(wèn)題。l 實(shí)際項(xiàng)目中的php程序這里我們采用群組項(xiàng)目中的pb頁(yè)面,涉及到和數(shù)據(jù)庫(kù)交互,db交互2次。db部署在其他機(jī)器,每次請(qǐng)求耗時(shí)50ms左右。壓力工具:mysql壓力情況:每秒400次請(qǐng)求,并發(fā)數(shù)70性能指標(biāo):cpu idle測(cè)試結(jié)果如下圖6實(shí)際的php頁(yè)面,400/s壓力idle情況從圖
21、上可以看出,性能的情況和圖2類(lèi)似,各種模式的差距仍然不大。l 極限壓力測(cè)試壓力工具:ab測(cè)試參數(shù):并發(fā)請(qǐng)求數(shù)100,總次數(shù)10000次。測(cè)試頁(yè)面:pb頁(yè)面性能指標(biāo):每秒請(qǐng)求數(shù) rps圖7極限壓力測(cè)試 pb頁(yè)面從上圖我們可以看到,極限壓力下,使用eacc后,mod_php和ext(fpm)基本差不多,保持在860/s左右的水平,而使用fpm方式進(jìn)行管理的模式略優(yōu)于其他兩種fastcgi模式。測(cè)試中發(fā)現(xiàn),fastcgi模式下,不使用php-fpm管理的話,仍然會(huì)有core出現(xiàn)。fastcgi配置項(xiàng)對(duì)性能的影響。在mod_fastcgi下,不管是ext還是stc方式,有一個(gè)配置項(xiàng)是非常關(guān)鍵的:默認(rèn)啟
22、動(dòng)的php-cgi進(jìn)程實(shí)例數(shù)從fastcgi原理可以看出,當(dāng)有一個(gè)httpd進(jìn)程到來(lái)時(shí),它需要調(diào)用fastcgi server來(lái)執(zhí)行,如果此時(shí)所有server都出于服務(wù)狀態(tài),則這個(gè)httpd進(jìn)程將出于等待狀態(tài)得不到服務(wù),導(dǎo)致請(qǐng)求無(wú)法響應(yīng)。對(duì)pb頁(yè)面進(jìn)行測(cè)試,配置不同的實(shí)例數(shù)目進(jìn)行極限壓力測(cè)試,得到結(jié)果如下圖8 fastcgi實(shí)例數(shù)對(duì)性能的影響分析一下這個(gè)原因:我們的pb頁(yè)面執(zhí)行時(shí)間是50ms,也就是說(shuō)一個(gè)php-cgi程序在1s內(nèi)可以處理的請(qǐng)求數(shù)目是1000/50 = 20。假設(shè)啟動(dòng)的實(shí)例數(shù)目是n,則1s內(nèi)最多能完成的請(qǐng)求數(shù)為n*20,從圖上可以看出,實(shí)際結(jié)果符合我們的計(jì)算。另外,這個(gè)數(shù)值也不
23、是無(wú)限增大了,當(dāng)n*20大于server本身所能承受的極限時(shí),rps也不會(huì)繼續(xù)往上增長(zhǎng)了。所以,使用fastcgi,對(duì)于n的選擇,要綜合頁(yè)面平均處理時(shí)間,最大壓力等多種因素結(jié)合來(lái)配置。同時(shí),在ext方式下,webserver和fastcgi server交互的方式有兩種:通過(guò)tcp或者unix sock。測(cè)試一下這兩種方式的情況使用myab每秒400次請(qǐng)求pb頁(yè)面,機(jī)器idle圖9 ext下unix sock和tcp的區(qū)別從圖上可以看出,不管是否使用eacc,tcp方式的idle都有一個(gè)百分點(diǎn)的下降,這個(gè)差異主要是因?yàn)槎嗔藅cp連接過(guò)程造成的。分析&結(jié)論根據(jù)各種測(cè)試結(jié)果,可以看出和fa
24、stcgi方式相比,mod_php的性能在各種情況下都稍優(yōu),這種差異主要是在于后一種方式增加了一次數(shù)據(jù)交互過(guò)程php->fascgi->apache。但是這個(gè)差距并不大,在使用了eacc等緩存優(yōu)化工具后,性能有了很大提升。他們之間的差距完全不是瓶頸。從使用的角度來(lái)說(shuō),fastcgi具有以下優(yōu)點(diǎn):1 webserver和php程序分離,兩者可以部署在不同的地方,通過(guò)socket方式通信帶來(lái)一定安全性2 使用fastcgi,在出現(xiàn)問(wèn)題時(shí)可以更好的定位是webserver還是php的原因3 fastcgi方式不依賴(lài)于webserver,更加靈活,擴(kuò)展性也更好4 fastcgi本身會(huì)有一些
25、進(jìn)程監(jiān)控和日志記錄,更便于分析問(wèn)題,跟蹤狀態(tài)。5 靈活多樣的配置,可以根據(jù)實(shí)際的應(yīng)用進(jìn)行合理配置達(dá)到最佳效果。當(dāng)然fastcgi也有一些缺點(diǎn)1 mod_fastcgi在進(jìn)程管理上有一些問(wèn)題,容易出core。這個(gè)問(wèn)題通過(guò)使用php-fpm可以解決2 由于fastcgi應(yīng)用單獨(dú)分離出來(lái),因此需要單獨(dú)監(jiān)控進(jìn)程的狀態(tài)。防止進(jìn)程掛掉后導(dǎo)致服務(wù)出現(xiàn)問(wèn)題,這個(gè)可以通過(guò)使用用supervise管理一定程度上避免這個(gè)問(wèn)題。3 文檔相對(duì)缺乏,mod_fastcgi對(duì)apache的支持也不是特別好,且基本沒(méi)有升級(jí)。關(guān)于fastcgi運(yùn)行方式的選擇,從效率、穩(wěn)定性等各方面來(lái)說(shuō),ext方式是最佳選擇了。而且考慮到我們可
26、能會(huì)將webserver和php分開(kāi)到不同機(jī)器,選擇遠(yuǎn)程方式也是必須的。進(jìn)程管理工具,從各方面來(lái)說(shuō),php-fpm是最優(yōu)選擇了,即時(shí)使用lighty作用web server,也完全可以用它代替spwn-cgi。綜合測(cè)試結(jié)果和上述分析,我們完全可以采用fastcgi代替?zhèn)鹘y(tǒng)的mod_php。推薦使用下面的組合方式apache + ext + php-fpm(with superwise)如果webserver和fastcgi部署在同一機(jī)器上,使用unix sock方式通信,否則使用tcp方式。附錄apache+mod_fastcgi+php搭建l phpmod_fastcgi的搭建主要有三種方式
27、stc、ext和dyn,不管是哪種方式,首先在安裝php的時(shí)候需要加上如下選項(xiàng)-enable-fastcgi,并且不能使用with-apxs。以下是一個(gè)配置php例子./configure -prefix=/home/club/hongdk/env/php5.26-fcgi/ -enable-trace-vars -with-zlib-dir=/home/club/hongdk/tool/zlib/ -with-mysql=/home/club/hongdk/env/mysql5/ -with-mysqli=/home/club/hongdk/env/mysql5/bin/mysql_conf
28、ig -with-gettext -with-iconv -enable-mbstring=gbk -with-xmlrpc -enable-safe-mode -enable-sockets -enable-url-fopen-wrapper -enable-ftp -enable-shmop -with-config-file-path=/home/club/hongdk/env/php5.26-fcgi/ -enable-xml -with-dom=/home/club/hongdk/tool/libxml/ -with-libxml-dir=/home/club/hongdk/tool
29、/libxml/ -with-curl=/home/club/hongdk/tool/curl -with-curlwrappers -enable-fastcgi 在安裝完后,會(huì)在php的bin目錄下找到如下文件php-cgi執(zhí)行 ./php-cgi v,如果看到PHP 5.2.5 (cgi-fcgi) (built: Nov 12 2008 20:44:08)Copyright (c) 1997-2007 The PHP GroupZend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies就表明安裝成功了l mod_fastc
30、gicp Makefile.AP2 Makefilevi Makefile修改top_dir為apache安裝目錄makemake installl apache配置修改httpd.conf首先增加LoadModule fastcgi_module modules/mod_fastcgi.so然后根據(jù)不同的運(yùn)行模式進(jìn)行配置egext模式<IfModule mod_fastcgi.c>FastCgiExternalServer $php-server -socket /home/club/fastcgi.sockScriptAlias /cgi-bin/ "/home/club/hongdk/env/apache-fcgi/cgi-bin/"AddHandler php-fastcgi .phpAction php-fastcgi /cgi-bin/php-cgiAddType application/x-httpd-php .php</IfModule>其中$php-sever為php-cgi程序,例如/home/club/hongdk/env/apache-fcgi/cgi-bin/ph
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年邴雅與薛含婚變和解契約3篇
- 成都職業(yè)技術(shù)學(xué)院《EVC企業(yè)價(jià)值創(chuàng)造》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024消防工程安全風(fēng)險(xiǎn)評(píng)估與監(jiān)控承接合同范本3篇
- 2024年車(chē)輛借用協(xié)議
- 二零二五年度bt項(xiàng)目環(huán)境監(jiān)測(cè)與治理合同2篇
- 2024年磚廠供應(yīng)及承包管理協(xié)議版
- 中醫(yī)理療療法介紹圖解
- 2024榨菜種植與農(nóng)業(yè)廢棄物資源化利用合同3篇
- 2025年智慧社區(qū)安防系統(tǒng)設(shè)計(jì)與施工一體化合同
- 未來(lái)冰雪經(jīng)濟(jì)發(fā)展的挑戰(zhàn)與機(jī)遇
- 車(chē)膜品牌推廣方案
- 消化道出血的PBL教學(xué)查房
- 2024年小學(xué)四年級(jí)數(shù)學(xué)上冊(cè)??家族e(cuò)題綜合測(cè)評(píng)卷
- 小學(xué)數(shù)學(xué)五年級(jí)下冊(cè)通分練習(xí)100題附答案
- 湖南省張家界市慈利縣2023-2024學(xué)年六年級(jí)上學(xué)期期末考試綜合(道德與法治、科學(xué))試題
- 工程項(xiàng)目管理(三控三管一協(xié)調(diào))
- 游戲機(jī)策劃方案
- 2024消防安全基礎(chǔ)知識(shí)培訓(xùn)課件
- 《小兒留置導(dǎo)尿管》課件
- 粵教版科學(xué)四年級(jí)上冊(cè)全冊(cè)試卷(含答案)
- 宮腔鏡診治規(guī)范
評(píng)論
0/150
提交評(píng)論