欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
nginx+PHP+PHP-FPM(FastCGI)在Ubuntu上的安裝和配置
  nginx+PHP+PHP-FPM(FastCGI)在Ubuntu上的安裝和配置 收藏
nginx+PHP+PHP-FPM(FastCGI)在Ubuntu上的安裝和配置
版本:v1.0  作者:OMO 最后修改時(shí)間:2009.07.10
0 之前知識回顧:
1) 目前各種服務(wù)器HTTP Server對PHP的支持一共有三種:
a.通過(guò)HTTPServer內置的模塊來(lái)實(shí)現,
例如Apache的mod_php5,類(lèi)似的Apache內置的mod_perl可以對perl支持;
b.通過(guò)CGI來(lái)實(shí)現,這個(gè)就好比之前perl的CGI,該種方式的缺點(diǎn)是性能差,因為每次服務(wù)器遇到這些腳本都需要重新啟動(dòng)腳本解析器來(lái)執行腳本然后將結果返回給服務(wù)器;另一方面就是不太安全;該方面幾乎很少使用了。
c.最新出現一種叫做FastCGI。所謂FastCGI就是對CGI的改進(jìn)。它一般采用C/S結構,一般腳本處理器會(huì )啟動(dòng)一個(gè)或者多個(gè)daemon進(jìn)程,每次HTTPServer遇到腳本的時(shí)候,直接交付給FastCGI的進(jìn)程來(lái)執行,然后將得到的結果(通常為html)返回給瀏覽器。

>該種方法的問(wèn)題存在一個(gè)小問(wèn)題是當遇到大流量的頻繁請求的話(huà),腳本處理器的daemon進(jìn)程可能會(huì )超負荷從而變得很慢,甚至發(fā)生內存泄漏;
>但是比較起Apache的內置模塊的方式的優(yōu)點(diǎn)是由于Server和腳本解析器完全分開(kāi)各負其責,因此服務(wù)器不再臃腫,可以專(zhuān)心地進(jìn)行靜態(tài)文件響應或者將動(dòng)態(tài)腳本解析器的結果返回給用戶(hù)客戶(hù)端。所以比較起Apache的內置模塊方式,有時(shí)候性能要提高很多。有人測試可能會(huì )達到Apache+mod_php的5~10倍。

2) 使用FastCGI方式現在常見(jiàn)的有兩種stack:ligthttpd+spawn-fcgi; 另外一種是nginx+PHP-FPM(也可以用spawn-fcgi) 。
a.如上面所說(shuō)該兩種結構都采用FastCGI對PHP支持,因此HTTPServer完全解放出來(lái),可以更好地進(jìn)行響應和并發(fā)處理。因此lighttpd和nginx都有small, but powerful和efficient的美譽(yù)。
b. 該兩者還可以分出一個(gè)好壞來(lái),spawn-fcgi由于是lighttpd的一部分,因此安裝了lighttpd一般就會(huì )使用spawn-fcgi對php支持,但是目前有用戶(hù)說(shuō)ligttpd的spwan-fcgi在高并發(fā)訪(fǎng)問(wèn)的時(shí)候,會(huì )出現上面說(shuō)的內存泄漏甚至自動(dòng)重啟fastcgi。即:PHP腳本處理器當機,這個(gè)時(shí)候如果用戶(hù)訪(fǎng)問(wèn)的話(huà),可能就會(huì )出現白頁(yè)(即PHP不能被解析或者出錯)。
另一個(gè):首先nginx不像lighttpd本身含帶了fastcgi(spawn-fcgi),因此它完全是輕量級的,必須借助第三方的FastCGI處理器才可以對PHP進(jìn)行解析,因此其實(shí)這樣看來(lái)nginx是非常靈活的,它可以和任何第三方提供解析的處理器實(shí)現連接從而實(shí)現對PHP的解析(在nginx.conf中很容易設置)。
nginx可以使用spwan-fcgi(需要一同安裝lighttpd,但是需要為nginx避開(kāi)端口,一些較早的blog有這方面安裝的教程),但是由于spawn-fcgi具有上面所述的用戶(hù)逐漸發(fā)現的缺陷,現在慢慢減少使用nginx+spawn-fcgi組合了。
c. 由于spawn-fcgi的缺陷,現在出現了新的第三方(目前還是,聽(tīng)說(shuō)正在努力不久將來(lái)加入到PHP core中)的PHP的FastCGI處理器,叫做PHP-FPM(具體可以google)。它和spawn-fcgi比較起來(lái)有如下優(yōu)點(diǎn):
由于它是作為PHP的patch補丁來(lái)開(kāi)發(fā)的,安裝的時(shí)候需要和php源碼一起編譯,也就是說(shuō)編譯到php core中了,因此在性能方面要優(yōu)秀一些;
同時(shí)它在處理高并發(fā)方面也優(yōu)于spawn-fcgi,至少不會(huì )自動(dòng)重啟fastcgi處理器。具體采用的算法和設計可以google了解。
因此,如上所說(shuō)由于nginx的輕量和靈活性,因此目前性能優(yōu)越,越來(lái)越多人逐漸使用這個(gè)組合:nginx+PHP/PHP-FPM 。
3) 因此總結:
目前在HTTPServer這塊基本可以看到有三種stack比較流行:
>Apache+mod_php5
>lighttp+spawn-fcgi
>nginx+PHP-FPM
三者后兩者性能可能稍?xún)?yōu),但是Apache由于有豐富的模塊和功能,目前來(lái)說(shuō)仍舊是老大。有人測試nginx+PHP-FPM在高并發(fā)情況下可能會(huì )達到Apache+mod_php5的5~10倍,現在nginx+PHP-FPM使用的人越來(lái)越多。
下面著(zhù)重介紹stack:
Apache+mod_php5和nginx+PHP-FPM的安裝和配置。對于lighttpd+spawn-fcgi,由于我個(gè)人沒(méi)有怎么用過(guò),所以如下不準備介紹,感興趣可以查閱資料。

1.Apache+mod_php模式:
我們很久一段時(shí)間使用經(jīng)典的Apache+mod_php:
Apache對PHP的支持是通過(guò)Apache的模塊來(lái)支持的。如果曾源代碼編譯安裝php的話(huà),如果希望Apache支持PHP的話(huà),在./configure步驟需要指定--with-apxs2=/usr/local/apache2/bin/apxs 表示告訴編譯器通過(guò)Apache的mod_php5/apxs來(lái)提供對PHP5的解析;
而且在最后一步make install的時(shí)候我們會(huì )看到將動(dòng)態(tài)鏈接庫libphp5.so(Apache模塊)拷貝到apache2的安裝目錄的modules目錄下,并且還需要在httpd.conf配置文件中添加LoadModule語(yǔ)句來(lái)動(dòng)態(tài)將libphp5.so 模塊加載進(jìn)來(lái),從而實(shí)現Apache對php的支持。
1)由于該模式實(shí)在太經(jīng)典了,因此這里關(guān)于安裝部分不準備詳述了,相對來(lái)說(shuō)比較簡(jiǎn)單。
2)這里之所以仍舊列出來(lái)Apache+mod_php5來(lái)討論,是因為:
看過(guò)上一篇文章的話(huà),我們知道nginx一般包括兩個(gè)用途HTTPServer和Reverse Proxy Server(反向代理服務(wù)器)。
我們介紹了如何在前端部署nginx作為reverse proxy server,后端布置多個(gè)Apache來(lái)實(shí)現機群系統server cluster架構的。
因此,實(shí)際生產(chǎn)中,我們仍舊能夠保留Apache+mod_php5的經(jīng)典App Server,而僅僅使用nginx來(lái)當做前端的reverse proxy server來(lái)實(shí)現代理和負載均衡。 因此,建議nginx(1個(gè)或者多個(gè))+多個(gè)apache的架構繼續使用下去。
2. nginx+PHP-FPM:
1)通過(guò)上面的分析,盡管我們可以仍舊保留Apache+mod_php來(lái)處理PHP,所有的靜態(tài)文件和負載均衡由頂在前端的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í)現對PHP的處理。
因此現在出現了新的名詞叫做LEMP(Linux+EngineX(nginx)+MySQL+PHP),慢慢要代替經(jīng)典很多年的LAMP 。
2)甚至出現一種新的server cluster:
其中看不到Apache的影子了,全部由nginx來(lái)搞定。nginx輕量型,高性能,高靈活性使得它完全能夠應付過(guò)來(lái)。
由于PHP-FPM是C/S結構,因此我們前端保留nginx來(lái)做負載均衡;對于之前后端的各個(gè)Apache服務(wù)器,我們不需要安裝Apache了,對PHP重新編譯安裝使其以PHP-FPM方式支持FastCGI;
然后在nginx中配置將客戶(hù)端的php請求分別pass到后臺的多個(gè)運行的PHP-FPM,后者進(jìn)行處理然后返回給nginx,然后顯示給用戶(hù)。整個(gè)過(guò)程可以完全不要Apache。
3) 下面我們具體來(lái)介紹如何來(lái)安裝和簡(jiǎn)單配置
nginx+PHP+PHP-FPM+MySQL.
3. 安裝和配置nginx+PHP+PHP-FPM+MySQL:
1) 安裝MySQL:
這里之所以首先要安裝MySQL,是因為之后編譯安裝PHP的時(shí)候,可以直接指定對MySQL的支持。
我們知道PHP對MySQL的支持是通過(guò)PHP擴展實(shí)現的。
可以源代碼安裝,不過(guò)我使用的Ubuntu,直接使用了其發(fā)布的二進(jìn)制包安裝了:
$sudo apt-get install mysql-server
安裝的時(shí)候需要提示設置root密碼;
之后使用
$netstat -tap |grep mysql
看看是否正常運行;
2) 安裝PHP和PHP-FPM:
我們之前介紹了PHP-FPM是對PHP的補丁,因此需要和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è)版本盡量相同(不相同可能出錯,我自己沒(méi)試過(guò))。
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不認識,可以使用apt-get安裝,或者google找答案。
c. 配置編譯環(huán)境:
在安裝之前可能需要安裝幾個(gè)依賴(lài)包:
sudo apt-get install libxml2-dev
sudo apt-get install libmysqlclient15-dev
不安裝也可以,之后./configure失敗的話(huà),根據出錯信息,再慢慢搜索安裝依賴(lài)包也可以,重要的是記下關(guān)鍵步驟,因為每個(gè)人的系統裝沒(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,如果不配置默認安裝到/usr/local下,這樣我覺(jué)得不太好,這樣make install各個(gè)文件就會(huì )被拷貝得分散開(kāi)來(lái)(分散在local的各個(gè)目錄下),如果我們之后想卸載干凈而且無(wú)法使用make uninstall的話(huà),還不方便。安裝到/usr/local/php下,如果我們想刪除php,直接刪除該目錄即可。
--enable-fastcgi和--enable-fpm分別設置支持fastcgi和PHP-FPM的選項;
--with-mysql和--with-mysqli相當于編譯php的MySQL擴展到php內核中,這樣我們可以在php中使用mysql和mysqli庫的函數訪(fǎng)問(wèn)mysql;
注意:這里需要注意的一個(gè)問(wèn)題是,不要設置--with-apxs2=/usr/local/apache2/bin/apxs,我們知道它是告訴PHP編譯成模塊方式讓Apache來(lái)支持。如果設置了該選項的話(huà),編譯安裝之后,Apache會(huì )無(wú)法啟動(dòng),報錯信息:
/usr/lib/apache2/modules/libphp5.so: undefined symbol: -fpm-event-base-free
因此這里也就意味著(zhù),我們編譯PHP以PHP-FPM的方式來(lái)支持FastCGI的話(huà),基本上就不能和Apache一起使用了,也就是說(shuō)我們決定使用nginx+PHP+PHP-FPM的話(huà),這里的PHP就沒(méi)法和Apache一起使用了。
如果非還想要使用,那可以另外編譯安裝一個(gè)PHP,編譯的時(shí)候在./configure的時(shí)候設置--with-apxs2=/usr/local/apache2/bin/apxs,而且不要打PHP-FPM的補丁。
另外,如果該步驟出現錯誤,通常是缺乏依賴(lài)包,請按照錯誤信息安裝依賴(lài)包即可。
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文件拷貝到如上位置;
如果安裝都成功的話(huà),我們的以PHP-FPM方式支持FastCGI的PHP就被安裝到了/usr/local/php目錄下了。

3) 配置PHP和PHP-FPM:
首先可用到/usr/local/php/bin目錄下執行一下php -v,看PHP是否work。
a. 配置php.ini:
位于/usr/local/php/lib下
這里一般沒(méi)有嚴格需要配置什么,可以按照自己要求進(jìn)行配置。
b. 配置PHP-FPM這個(gè)PHP解析器:
我們上面說(shuō)過(guò)PHP-FPM解析器是C/S結構,它的配置文件位于/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模式區別于CGI模式,它需要一個(gè)daemon進(jìn)程一直運行在后臺對php請求做出解析,這里的PHP-FPM就是這個(gè)daemon進(jìn)程,在配置文件php-fpm.conf中可以設置它偵聽(tīng)的IP和端口,默認為127.0.0.1:9000。也就是它偵聽(tīng)9000端口的數據請求,然后會(huì )將其進(jìn)行解析然后返回給請求端。
這個(gè)和我們之前介紹的FastCGI的思想相吻合。HTTPServer服務(wù)器和FastCGI模式的PHP解析器相分離(這里就是PHP-FPM),HTTPServer遇到PHP請求的時(shí)候,就會(huì )傳遞給PHP-FPM,后者解析并返回。實(shí)現HTTPServer和PHP解析器完全分離,緩解了Server的負擔,Server有更多資源來(lái)處理并發(fā)請求。其實(shí)這也是nginx優(yōu)于apache的一個(gè)原因。
d. 檢查php-fpm是否運行正常:
$ps ax|grep fpm
4)安裝和配置nginx:
之前文章我們介紹了nginx的安裝和使用nginx作為reverser server的進(jìn)行負載均衡配置了,感興趣的可以參看。
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
默認安裝路徑為/usr/local/nginx,如果不放心自己可以使用--prefix=/usr/local/nginx配置一下
$make
$sudo make install
b. 思想:
我們之前的文章介紹了nginx的使用非常靈活,有人比喻其為server領(lǐng)域的瑞士軍刀,其實(shí)確實(shí)是:性能好,而且使用方法多。
各種使用方法都是通過(guò)配置文件來(lái)實(shí)現,因此掌握nginx的使用,除了掌握各種架構的思想之外,還要掌握如何對nginx.conf進(jìn)行相應的配置。
我們這里著(zhù)重對nginx.conf配置,實(shí)現通過(guò)php-fpm的fastcgi對php的處理。其實(shí)nginx本身并不會(huì )對PHP進(jìn)行解析,這個(gè)要區別于A(yíng)pache (Apache通過(guò)內置模塊實(shí)現了對PHP的解析),nginx其實(shí)是將對php頁(yè)面的請求交給了后臺在127.0.0.1:9000 偵聽(tīng)的php-fpm,后者具有解析php的功能。
因此如果把php-fpm看做一個(gè)app server的話(huà),其實(shí)nginx這里的作用還是一個(gè)反向代理服務(wù)器。和我們之前介紹的使用location配置將php請求proxypass給后臺偵聽(tīng)的Apache服務(wù)器,在思想上幾乎一樣。

c. 配置位于/usr/local/nginx/conf目錄下的nginx.conf和fastcgi.params
>nginx.conf配置:
$cd /usr/local/nginx/conf
$sudo vi nginx.conf
從上往下對默認的配置文件進(jìn)行修改:
    1. user  www-data; 這里需要和php-fpm中定義的用戶(hù)一致;
    2. worker_processes 2; 可以設置更多,這個(gè)選項和之后的worker_connections  1024;
        一起來(lái)定義每個(gè)進(jìn)程并發(fā)相應的最大連接數,因此這里可以達到2*1024的并發(fā)請求;
    3. 在server {
        listen       8080;
        如果自己已經(jīng)安裝了Apache并且占用了80端口,這里修改為別的8080,負責啟動(dòng)不了;
    4. 如上面所述,我們其實(shí)設置nginx將PHP請求轉發(fā)給后臺的php-fpm server即可,后者有解析php功能。
    其實(shí)還是充當反向代理的作用;
        # 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;
    之后需要設置為放置php腳本的位置 ,這里我們舉例在/usr/local/nginx/html目錄下創(chuàng )建一個(gè)phpinfo.php文件
    包含代碼<?php phpinfo(); ?>
$sudo vi fastcgi.params
配置fastcgi參數文件,具體可以參考http://wiki.nginx.org/NginxFcgiExample
基本上可以使用默認的該文件,不需要修改。
5) 運行nginx:
$sudo /usr/local/nginx/sbin/nginx
然后在瀏覽器中查看http://localhost
> 默認會(huì )顯示/usr/local/nginx/html目錄下的index.html頁(yè)面: Welcome to Nginx!
>然后查看http://localhost/phpinfo.php ,相當于訪(fǎng)問(wèn)html目錄下的phpinfo.php頁(yè)面,
如果正常,會(huì )顯示phpinfo的頁(yè)面。其中可以看到Server API一項包含:CGI/FastCGI,表示FastCGI方式運行。
如果以上步驟出現錯誤,通常都是因為nginx.conf配置不正確,可以google尋找解決方法,一般都可以找得到(英文)。然后重新修改nginx.conf文件。
之后需要重啟nginx,可以執行:
$sudo kill `cat /usr/local/nginx/logs/nginx.pid` 表示關(guān)閉nginx
$sudo /usr/local/nginx/sbin/nginx 再次啟動(dòng)nginx
6)設置開(kāi)機自啟動(dòng):
在Ubuntu下,如果希望添加到/etc/init.d實(shí)現開(kāi)機重啟的話(huà),可以Google尋找nginx和php-fpm的init script(php-fpm本身就是init script不需要尋找了),然后拷貝到/etc/init.d目錄下。
簡(jiǎn)單的方法,設置rc.local:
$sudo vi /etc/rc.local
在exit 0之前添加:
/usr/local/php/sbin/php-fpm start
/usr/local/nginx/sbin/nginx
這樣開(kāi)機自動(dòng)啟動(dòng)nginx和php-fpm。
7) 使用nginx和php-fpm實(shí)現server  cluster:
和nginx對多臺app server代理實(shí)現負載均衡類(lèi)似,我們可以實(shí)現nginx對多臺php-fpm實(shí)現負載均衡:
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. 總結:
三種常用模式:
Apache+mod_php5;
lightppd+spawn-fcgi;
nginx+PHP-FPM
我們可以使用到生產(chǎn)環(huán)境中的:
0) 如果不是server cluster的話(huà):
可以使用以上任一種,不過(guò)有各種測試表明nginx+PHP-FPM性能優(yōu)越,但是Apache+mod_php5很經(jīng)典模塊多,比如對.htaccess等的支持。
如果構建server cluster的話(huà):
1) nginx作為反向代理服務(wù)器,后臺多臺Apache+mod_php5。
nginx處理靜態(tài)文件,及對php并發(fā)請求對后臺多臺app server的負載均衡;
2) nginx作為反向代理器,后臺多臺PHP-FPM
nginx處理靜態(tài)文件及將php并發(fā)請求發(fā)送到后臺php-fpm來(lái)解析;

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

本文來(lái)自CSDN博客,轉載請標明出處:http://blog.csdn.net/omohe/archive/2009/07/10/4336731.aspx
本文來(lái)自CSDN博客,轉載請標明出處:http://blog.csdn.net/omohe/archive/2009/07/10/4336731.aspx
本文來(lái)自CSDN博客,轉載請標明出處:http://blog.csdn.net/omohe/archive/2009/07/10/4336731.aspx
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Nginx PHP-FPM APC=絕妙的組合(1) - 51CTO.COM
基于php在各種web服務(wù)器的運行模式詳解
Nginx+Keepalived+Tomcat之動(dòng)靜分離的web集群
RHEL / CentOS 7 安裝 Nginx, MySQL, PHP (LEMP) | Linux 技術(shù)手札
實(shí)戰Nginx與PHP(FastCGI)的安裝、配置與優(yōu)化
php在apache中運行模式
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久