日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > php >内容正文

php

nginx+PHP+PHP-FPM(FastCGI)在Ubuntu上的安装和配置

發(fā)布時(shí)間:2023/12/9 php 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx+PHP+PHP-FPM(FastCGI)在Ubuntu上的安装和配置 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
nginx+PHP+PHP-FPM(FastCGI)在Ubuntu上的安裝和配置0 之前知識(shí)回顧:?
1) 目前各種服務(wù)器HTTP Server對(duì)PHP的支持一共有三種:?

a.通過(guò)HTTPServer內(nèi)置的模塊來(lái)實(shí)現(xiàn),例如Apache的mod_php5,類似的Apache內(nèi)置的mod_perl可以對(duì)perl支持;

b.通過(guò)CGI來(lái)實(shí)現(xiàn),這個(gè)就好比之前perl的CGI,該種方式的缺點(diǎn)是性能差,因?yàn)槊看畏?wù)器遇到這些腳本都需要重新啟動(dòng)腳本解析器來(lái)執(zhí)行腳本然后將結(jié)果返回給服務(wù)器;另一方面就是不×××全;該方面幾乎很少使用了。

c.最新出現(xiàn)一種叫做FastCGI。所謂FastCGI就是對(duì)CGI的改進(jìn)。它一般采用C/S結(jié)構(gòu),一般腳本處理器會(huì)啟動(dòng)一個(gè)或者多個(gè)daemon進(jìn)程,每次HTTPServer遇到腳本的時(shí)候,直接交付給FastCGI的進(jìn)程來(lái)執(zhí)行,然后將得到的結(jié)果(通常為html)返回給瀏覽器。

>該種方法的問(wèn)題存在一個(gè)小問(wèn)題是當(dāng)遇到大流量的頻繁請(qǐng)求的話,腳本處理器的daemon進(jìn)程可能會(huì)超負(fù)荷從而變得很慢,甚至發(fā)生內(nèi)存泄漏;

>但是比較起Apache的內(nèi)置模塊的方式的優(yōu)點(diǎn)是由于Server和腳本解析器完全分開(kāi)各負(fù)其責(zé),因此服務(wù)器不再臃腫,可以專心地進(jìn)行靜態(tài)文件響應(yīng)或者將動(dòng)態(tài)腳本解析器的結(jié)果返回給用戶客戶端。所以比較起Apache的內(nèi)置模塊方式,有時(shí)候性能要提高很多。有人測(cè)試可能會(huì)達(dá)到Apache+mod_php的5~10倍。

2) 使用FastCGI方式現(xiàn)在常見(jiàn)的有兩種stack:ligthttpd+spawn-fcgi;?另外一種是nginx+PHP-FPM(也可以用spawn-fcgi)?。?

a.如上面所說(shuō)該兩種結(jié)構(gòu)都采用FastCGI對(duì)PHP支持,因此HTTPServer完全解放出來(lái),可以更好地進(jìn)行響應(yīng)和并發(fā)處理。因此lighttpd和nginx都有small, but powerful和efficient的美譽(yù)。

b. 該兩者還可以分出一個(gè)好壞來(lái),spawn-fcgi由于是lighttpd的一部分,因此安裝了lighttpd一般就會(huì)使用spawn-fcgi對(duì)php支持,但是目前有用戶說(shuō)ligttpd的spwan-fcgi在高并發(fā)訪問(wèn)的時(shí)候,會(huì)出現(xiàn)上面說(shuō)的內(nèi)存泄漏甚至自動(dòng)重啟fastcgi。即:PHP腳本處理器當(dāng)機(jī),這個(gè)時(shí)候如果用戶訪問(wèn)的話,可能就會(huì)出現(xiàn)白頁(yè)(即PHP不能被解析或者出錯(cuò))。

另一個(gè):首先nginx不像lighttpd本身含帶了fastcgi(spawn-fcgi),因此它完全是輕量級(jí)的,必須借助第三方的FastCGI處理器才可以對(duì)PHP進(jìn)行解析,因此其實(shí)這樣看來(lái)nginx是非常靈活的,它可以和任何第三方提供解析的處理器實(shí)現(xiàn)連接從而實(shí)現(xiàn)對(duì)PHP的解析(在nginx.conf中很容易設(shè)置)。

nginx可以使用spwan-fcgi(需要一同安裝lighttpd,但是需要為nginx避開(kāi)端口,一些較早的blog有這方面安裝的教程),但是由于spawn-fcgi具有上面所述的用戶逐漸發(fā)現(xiàn)的缺陷,現(xiàn)在慢慢減少使用nginx+spawn-fcgi組合了。

c. 由于spawn-fcgi的缺陷,現(xiàn)在出現(xiàn)了新的第三方(目前還是,聽(tīng)說(shuō)正在努力不久將來(lái)加入到PHP core中)的PHP的FastCGI處理器,叫做PHP-FPM(具體可以google)。它和spawn-fcgi比較起來(lái)有如下優(yōu)點(diǎn):
由于它是作為PHP的patch補(bǔ)丁來(lái)開(kāi)發(fā)的,安裝的時(shí)候需要和php源碼一起編譯,也就是說(shuō)編譯到php core中了,因此在性能方面要優(yōu)秀一些;
同時(shí)它在處理高并發(fā)方面也優(yōu)于spawn-fcgi,至少不會(huì)自動(dòng)重啟fastcgi處理器。具體采用的算法和設(shè)計(jì)可以google了解。
因此,如上所說(shuō)由于nginx的輕量和靈活性,因此目前性能優(yōu)越,越來(lái)越多人逐漸使用這個(gè)組合:nginx+PHP/PHP-FPM?。

3) 因此總結(jié):?
目前在HTTPServer這塊基本可以看到有三種stack比較流行:?

>Apache+mod_php5
>lighttp+spawn-fcgi
>nginx+PHP-FPM

三者后兩者性能可能稍優(yōu),但是Apache由于有豐富的模塊和功能,目前來(lái)說(shuō)仍舊是老大。有人測(cè)試nginx+PHP-FPM在高并發(fā)情況下可能會(huì)達(dá)到Apache+mod_php5的5~10倍,現(xiàn)在nginx+PHP-FPM使用的人越來(lái)越多。

下面著重介紹stack:
Apache+mod_php5和nginx+PHP-FPM的安裝和配置。對(duì)于lighttpd+spawn-fcgi,由于我個(gè)人沒(méi)有怎么用過(guò),所以如下不準(zhǔn)備介紹,感興趣可以查閱資料。


1.Apache+mod_php模式:?

我們很久一段時(shí)間使用經(jīng)典的Apache+mod_php:?

Apache對(duì)PHP的支持是通過(guò)Apache的模塊來(lái)支持的。如果曾源代碼編譯安裝php的話,如果希望Apache支持PHP的話,在./configure步驟需要指定--with-apxs2=/usr/local/apache2/bin/apxs?表示告訴編譯器通過(guò)Apache的mod_php5/apxs來(lái)提供對(duì)PHP5的解析;
而且在最后一步make install的時(shí)候我們會(huì)看到將動(dòng)態(tài)鏈接庫(kù)libphp5.so(Apache模塊)拷貝到apache2的安裝目錄的modules目錄下,并且還需要在httpd.conf配置文件中添加LoadModule語(yǔ)句來(lái)動(dòng)態(tài)將libphp5.so?模塊加載進(jìn)來(lái),從而實(shí)現(xiàn)Apache對(duì)php的支持。

1)由于該模式實(shí)在太經(jīng)典了,因此這里關(guān)于安裝部分不準(zhǔn)備詳述了,相對(duì)來(lái)說(shuō)比較簡(jiǎn)單。

2)這里之所以仍舊列出來(lái)Apache+mod_php5來(lái)討論,是因?yàn)?#xff1a;
看過(guò)上一篇文章的話,我們知道nginx一般包括兩個(gè)用途HTTPServer和Reverse Proxy Server(反向代理服務(wù)器)。

我們介紹了如何在前端部署nginx作為reverse proxy server,后端布置多個(gè)Apache來(lái)實(shí)現(xiàn)機(jī)群系統(tǒng)server cluster架構(gòu)的。
因此,實(shí)際生產(chǎn)中,我們?nèi)耘f能夠保留Apache+mod_php5的經(jīng)典App Server,而僅僅使用nginx來(lái)當(dāng)做前端的reverse proxy server來(lái)實(shí)現(xiàn)代理和負(fù)載均衡。?因此,建議nginx(1個(gè)或者多個(gè))+多個(gè)apache的架構(gòu)繼續(xù)使用下去。

2. nginx+PHP-FPM:?

1)通過(guò)上面的分析,盡管我們可以仍舊保留Apache+mod_php來(lái)處理PHP,所有的靜態(tài)文件和負(fù)載均衡由頂在前端的nginx來(lái)完成,但是由于nginx和PHP-FPM各自的優(yōu)越性,使得nginx+PHP-FPM的組合的性能已經(jīng)很超越Apache+mod_php。?
因此很多人漸漸放棄了Apache+mod_php的組合了,而完全使用nginx+PHP-FPM來(lái)實(shí)現(xiàn)對(duì)PHP的處理。
因此現(xiàn)在出現(xiàn)了新的名詞叫做LEMP(Linux+EngineX(nginx)+MySQL+PHP),慢慢要代替經(jīng)典很多年的LAMP?。

2)甚至出現(xiàn)一種新的server cluster:?
其中看不到Apache的影子了,全部由nginx來(lái)搞定。nginx輕量型,高性能,高靈活性使得它完全能夠應(yīng)付過(guò)來(lái)。
由于PHP-FPM是C/S結(jié)構(gòu),因此我們前端保留nginx來(lái)做負(fù)載均衡;對(duì)于之前后端的各個(gè)Apache服務(wù)器,我們不需要安裝Apache了,對(duì)PHP重新編譯安裝使其以PHP-FPM方式支持FastCGI;
然后在nginx中配置將客戶端的php請(qǐng)求分別pass到后臺(tái)的多個(gè)運(yùn)行的PHP-FPM,后者進(jìn)行處理然后返回給nginx,然后顯示給用戶。整個(gè)過(guò)程可以完全不要Apache。

3) 下面我們具體來(lái)介紹如何來(lái)安裝和簡(jiǎn)單配置?
nginx+PHP+PHP-FPM+MySQL.

3. 安裝和配置nginx+PHP+PHP-FPM+MySQL:?

1) 安裝MySQL:?

這里之所以首先要安裝MySQL,是因?yàn)橹缶幾g安裝PHP的時(shí)候,可以直接指定對(duì)MySQL的支持。
我們知道PHP對(duì)MySQL的支持是通過(guò)PHP擴(kuò)展實(shí)現(xiàn)的。
可以源代碼安裝,不過(guò)我使用的Ubuntu,直接使用了其發(fā)布的二進(jìn)制包安裝了:

$sudo apt-get install mysql-server

安裝的時(shí)候需要提示設(shè)置root密碼;
之后使用
$netstat -tap |grep mysql
看看是否正常運(yùn)行;

2) 安裝PHP和PHP-FPM:?
我們之前介紹了PHP-FPM是對(duì)PHP的補(bǔ)丁,因此需要和PHP一起編譯安裝。我這里使用的PHP 5.2.10?。
a. 下載安裝包:?
從php.net?下載:php-5.2.10.tar.gz
從PHP-FPM官網(wǎng)下載:php-5.2.10-fpm-0.5.13.diff.gz
注意兩個(gè)版本盡量相同(不相同可能出錯(cuò),我自己沒(méi)試過(guò))。

b. 解壓縮打補(bǔ)丁?
$tar xzvf php-5.2.10.tar.gz
$gzip -cd php-5.2.10-fpm-0.5.13.diff.gz | patch -d php-5.2.10 -p1
倘若中間需要哪個(gè)命令shell不認(rèn)識(shí),可以使用apt-get安裝,或者google找答案。

c. 配置編譯環(huán)境:?
在安裝之前可能需要安裝幾個(gè)依賴包:
sudo apt-get install libxml2-dev
sudo apt-get install libmysqlclient15-dev
不安裝也可以,之后./configure失敗的話,根據(jù)出錯(cuò)信息,再慢慢搜索安裝依賴包也可以,重要的是記下關(guān)鍵步驟,因?yàn)槊總€(gè)人的系統(tǒng)裝沒(méi)裝啥都不一定。

$cd php-5.2.10
$./configure --prefix=/usr/local/php --enable-fastcgi --enable-fpm --with-mysql --with-mysqli --with-openssl

這里我們配置php安裝到/usr/local/php,如果不配置默認(rèn)安裝到/usr/local下,這樣我覺(jué)得不太好,這樣make install各個(gè)文件就會(huì)被拷貝得分散開(kāi)來(lái)(分散在local的各個(gè)目錄下),如果我們之后想卸載干凈而且無(wú)法使用make uninstall的話,還不方便。安裝到/usr/local/php下,如果我們想刪除php,直接刪除該目錄即可。

--enable-fastcgi和--enable-fpm分別設(shè)置支持fastcgi和PHP-FPM的選項(xiàng);
--with-mysql和--with-mysqli相當(dāng)于編譯php的MySQL擴(kuò)展到php內(nèi)核中,這樣我們可以在php中使用mysql和mysqli庫(kù)的函數(shù)訪問(wèn)mysql;

注意:這里需要注意的一個(gè)問(wèn)題是,不要設(shè)置--with-apxs2=/usr/local/apache2/bin/apxs,我們知道它是告訴PHP編譯成模塊方式讓Apache來(lái)支持。如果設(shè)置了該選項(xiàng)的話,編譯安裝之后,Apache會(huì)無(wú)法啟動(dòng),報(bào)錯(cuò)信息:?
/usr/lib/apache2/modules/libphp5.so: undefined symbol: -fpm-event-base-free

因此這里也就意味著,我們編譯PHP以PHP-FPM的方式來(lái)支持FastCGI的話,基本上就不能和Apache一起使用了,也就是說(shuō)我們決定使用nginx+PHP+PHP-FPM的話,這里的PHP就沒(méi)法和Apache一起使用了。

如果非還想要使用,那可以另外編譯安裝一個(gè)PHP,編譯的時(shí)候在./configure的時(shí)候設(shè)置--with-apxs2=/usr/local/apache2/bin/apxs,而且不要打PHP-FPM的補(bǔ)丁。

另外,如果該步驟出現(xiàn)錯(cuò)誤,通常是缺乏依賴包,請(qǐng)按照錯(cuò)誤信息安裝依賴包即可。

d. 編譯:?
$make all?
注意這里盡量使用make all,而不要僅僅是make

e. 安裝:?
$make install

f. 拷貝php.ini文件:?
$sudo cp php.ini-dist /usr/local/php/lib/php.ini
將php.ini文件拷貝到如上位置;

如果安裝都成功的話,我們的以PHP-FPM方式支持FastCGI的PHP就被安裝到了/usr/local/php目錄下了。?


3) 配置PHP和PHP-FPM:
?

首先可用到/usr/local/php/bin目錄下執(zhí)行一下php -v,看PHP是否work。

a. 配置php.ini:?
位于/usr/local/php/lib下
這里一般沒(méi)有嚴(yán)格需要配置什么,可以按照自己要求進(jìn)行配置。

b. 配置PHP-FPM這個(gè)PHP解析器:?
我們上面說(shuō)過(guò)PHP-FPM解析器是C/S結(jié)構(gòu),它的配置文件位于/usr/local/php/etc/php-fpm.conf。
$cd /usr/local/php/etc
$sudo vi php-fpm.conf
該文件是一個(gè)xml文件,只需要修改:
????Unix user of processes
????<value name="user">www-data</value>
????Unix group of processes
????<value name="group">www-data</value>
注意去掉兩邊的注釋<!--和-->,否則之后php-fpm啟動(dòng)不了;

c. 配置完之后,就可以啟動(dòng)PHP-FPM:?
$/usr/local/php/sbin/php-fpm start

我們上面介紹了FastCGI模式區(qū)別于CGI模式,它需要一個(gè)daemon進(jìn)程一直運(yùn)行在后臺(tái)對(duì)php請(qǐng)求做出解析,這里的PHP-FPM就是這個(gè)daemon進(jìn)程,在配置文件php-fpm.conf中可以設(shè)置它偵聽(tīng)的IP和端口,默認(rèn)為127.0.0.1:9000。也就是它偵聽(tīng)9000端口的數(shù)據(jù)請(qǐng)求,然后會(huì)將其進(jìn)行解析然后返回給請(qǐng)求端。

這個(gè)和我們之前介紹的FastCGI的思想相吻合。HTTPServer服務(wù)器和FastCGI模式的PHP解析器相分離(這里就是PHP-FPM),HTTPServer遇到PHP請(qǐng)求的時(shí)候,就會(huì)傳遞給PHP-FPM,后者解析并返回。實(shí)現(xiàn)HTTPServer和PHP解析器完全分離,緩解了Server的負(fù)擔(dān),Server有更多資源來(lái)處理并發(fā)請(qǐng)求。其實(shí)這也是nginx優(yōu)于apache的一個(gè)原因。

d. 檢查php-fpm是否運(yùn)行正常:?
$ps ax|grep fpm

4)安裝和配置nginx:?

之前文章我們介紹了nginx的安裝和使用nginx作為reverser server的進(jìn)行負(fù)載均衡配置了,感興趣的可以參看。

a. nginx的安裝很簡(jiǎn)單:?
從官網(wǎng)下載安裝包:nginx-0.7.61.tar.gz

$tar xzvf nginx-0.7.61.tar.gz
$cd nginx-0.7.61
$./configure?
默認(rèn)安裝路徑為/usr/local/nginx,如果不放心自己可以使用--prefix=/usr/local/nginx配置一下
$make
$sudo make install

b. 思想:?

我們之前的文章介紹了nginx的使用非常靈活,有人比喻其為server領(lǐng)域的瑞士×××,其實(shí)確實(shí)是:性能好,而且使用方法多。
各種使用方法都是通過(guò)配置文件來(lái)實(shí)現(xiàn),因此掌握nginx的使用,除了掌握各種架構(gòu)的思想之外,還要掌握如何對(duì)nginx.conf進(jìn)行相應(yīng)的配置。?

我們這里著重對(duì)nginx.conf配置,實(shí)現(xiàn)通過(guò)php-fpm的fastcgi對(duì)php的處理。其實(shí)nginx本身并不會(huì)對(duì)PHP進(jìn)行解析,這個(gè)要區(qū)別于Apache?(Apache通過(guò)內(nèi)置模塊實(shí)現(xiàn)了對(duì)PHP的解析),nginx其實(shí)是將對(duì)php頁(yè)面的請(qǐng)求交給了后臺(tái)在127.0.0.1:9000?偵聽(tīng)的php-fpm,后者具有解析php的功能。

因此如果把php-fpm看做一個(gè)app server的話,其實(shí)nginx這里的作用還是一個(gè)反向代理服務(wù)器。和我們之前介紹的使用location配置將php請(qǐng)求proxypass給后臺(tái)偵聽(tīng)的Apache服務(wù)器,在思想上幾乎一樣。?


c. 配置位于/usr/local/nginx/conf目錄下的nginx.conf和fastcgi.params
?

>nginx.conf配置:?
$cd /usr/local/nginx/conf
$sudo vi nginx.conf
從上往下對(duì)默認(rèn)的配置文件進(jìn)行修改:

????1. user??www-data; 這里需要和php-fpm中定義的用戶一致;

????2. worker_processes 2; 可以設(shè)置更多,這個(gè)選項(xiàng)和之后的worker_connections??1024;
????????一起來(lái)定義每個(gè)進(jìn)程并發(fā)相應(yīng)的最大連接數(shù),因此這里可以達(dá)到2*1024的并發(fā)請(qǐng)求;

????3. 在server {
????????listen???????8080;
????????如果自己已經(jīng)安裝了Apache并且占用了80端口,這里修改為別的8080,負(fù)責(zé)啟動(dòng)不了;

????4. 如上面所述,我們其實(shí)設(shè)置nginx將PHP請(qǐng)求轉(zhuǎn)發(fā)給后臺(tái)的php-fpm server即可,后者有解析php功能。
????其實(shí)還是充當(dāng)反向代理的作用;
????????# pass the PHP scripts to FastCGI server listening on?127.0.0.1:9000?
????????#
????????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;
????????}
????注意fastcgi_param??SCRIPT_FILENAME??html/$fastcgi_script_name;

????之后需要設(shè)置為放置php腳本的位置?,這里我們舉例在/usr/local/nginx/html目錄下創(chuàng)建一個(gè)phpinfo.php文件?
????包含代碼<?php phpinfo(); ?>

$sudo vi fastcgi.params

配置fastcgi參數(shù)文件,具體可以參考http://wiki.nginx.org/NginxFcgiExample?
基本上可以使用默認(rèn)的該文件,不需要修改。
PS:1、需要正確設(shè)置fastcgi_param?SCRIPT_FILENAME的路徑,否則腳本解析會(huì)出現(xiàn)404錯(cuò)誤;?????2、修改php.ini文件,增加cgi.fix_pathinfo=1

5) 運(yùn)行nginx:

$sudo /usr/local/nginx/sbin/nginx

然后在瀏覽器中查看http://localhost?

> 默認(rèn)會(huì)顯示/usr/local/nginx/html目錄下的index.html頁(yè)面: Welcome to Nginx!

>然后查看http://localhost/phpinfo.php?,相當(dāng)于訪問(wèn)html目錄下的phpinfo.php頁(yè)面,

如果正常,會(huì)顯示phpinfo的頁(yè)面。其中可以看到Server API一項(xiàng)包含:CGI/FastCGI,表示FastCGI方式運(yùn)行。

如果以上步驟出現(xiàn)錯(cuò)誤,通常都是因?yàn)閚ginx.conf配置不正確,可以google尋找解決方法,一般都可以找得到(英文)。然后重新修改nginx.conf文件。

之后需要重啟nginx,可以執(zhí)行:

$sudo kill `cat /usr/local/nginx/logs/nginx.pid` 表示關(guān)閉nginx
$sudo /usr/local/nginx/sbin/nginx 再次啟動(dòng)nginx

6)設(shè)置開(kāi)機(jī)自啟動(dòng):
?

在Ubuntu下,如果希望添加到/etc/init.d實(shí)現(xiàn)開(kāi)機(jī)重啟的話,可以Google尋找nginx和php-fpm的init script(php-fpm本身就是init script不需要尋找了),然后拷貝到/etc/init.d目錄下。

簡(jiǎn)單的方法,設(shè)置rc.local:

$sudo vi /etc/rc.local

在exit 0之前添加:
/usr/local/php/sbin/php-fpm start
/usr/local/nginx/sbin/nginx

這樣開(kāi)機(jī)自動(dòng)啟動(dòng)nginx和php-fpm。

7) 使用nginx和php-fpm實(shí)現(xiàn)server??cluster:?

和nginx對(duì)多臺(tái)app server代理實(shí)現(xiàn)負(fù)載均衡類似,我們可以實(shí)現(xiàn)nginx對(duì)多臺(tái)php-fpm實(shí)現(xiàn)負(fù)載均衡:

T
?o configure Nginx to load balance multiple FastCgi servers use this type of configuration:

????upstream fastcgiServers {
????????server?127.0.0.1:9000?;
????????server?127.0.0.1:9001?;
????????server?198.192.0.1:9000?;
????????server?198.192.0.2:9000?;
????????server?198.192.0.3:9000?;
????}

????location ~ \.php$ {
fastcgi_pass fastcgiServers;
????fastcgi_index stream.app;
????fastcgi_param SCRIPT_FILENAME /var/www/htdocs$fastcgi_script_name;
????include /etc/nginx/fastcgi.conf;
????}

????
4. 總結(jié):?

三種常用模式:?
Apache+mod_php5;?
lightppd+spawn-fcgi;?
nginx+PHP-FPM
?


我們可以使用到生產(chǎn)環(huán)境中的:?

0) 如果不是server cluster的話:
可以使用以上任一種,不過(guò)有各種測(cè)試表明nginx+PHP-FPM性能優(yōu)越,但是Apache+mod_php5很經(jīng)典模塊多,比如對(duì).htaccess等的支持。?

如果構(gòu)建server cluster的話:
1) nginx作為反向代理服務(wù)器,后臺(tái)多臺(tái)Apache+mod_php5。?
nginx處理靜態(tài)文件,及對(duì)php并發(fā)請(qǐng)求對(duì)后臺(tái)多臺(tái)app server的負(fù)載均衡;

2) nginx作為反向代理器,后臺(tái)多臺(tái)PHP-FPM?
nginx處理靜態(tài)文件及將php并發(fā)請(qǐng)求發(fā)送到后臺(tái)php-fpm來(lái)解析;


另外:關(guān)于如何更好使用nginx這個(gè)輕量級(jí)高性能的瑞士×××,主要是如何配置nginx.conf,更多參看:
http://wiki.nginx.org/Main?
另外,關(guān)于PHP支持的各種緩存等這里沒(méi)有安裝,感興趣可以另行安裝。


更多參考資料:
http://www.php.net/manual/en/install.unix.apache2.php?
http://www.softwareprojects.com/resources/programming/t-installing-nginx-web-server-w-php-and-ssl-1474.html?
http://php-fpm.org/Main_Page?
http://www.softwareprojects.com/resources/programming/t-how-to-install-php-fpm-spawn-fcgi-replacement-1602.html?
http://wiki.nginx.org/NginxFcgiExample?
有可能以后會(huì)將PHP-FPM直接添加到PHP內(nèi)核中一起進(jìn)行發(fā)布
Will there be a PHP-FPM is included in the official PHP?
http://php-fpm.org/FAQ#Will_there_be_a_PHP-FPM_is_included_in_the_official_PHP.3F?

http://bookmarks.honewatson.com/2008/04/24/multiple-fastcgi-php-servers-nginx-load-balancing/?
http://www.wikivs.com/wiki/Lighttpd_vs_nginx?
http://en.wikipedia.org/wiki/Reverse_proxy?
http://sameerparwani.com/posts/nginx-as-a-front-end-to-apache/?
http://blog.kovyrin.net/2006/04/17/typical-nginx-configurations/?
http://www.yawn.it/2008/04/30/nginx-php-php-fpm-on-debian-etch-40/?
http://howtoforge.org/installing-nginx-with-php5-and-mysql-support-on-ubuntu-8.10

轉(zhuǎn)載于:https://blog.51cto.com/hzfanfan/383370

總結(jié)

以上是生活随笔為你收集整理的nginx+PHP+PHP-FPM(FastCGI)在Ubuntu上的安装和配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。