這兩天需要在Ubuntu14.04上搭建nginx和php的環(huán)境,配置的過程中在fastcgi的問題上花了很多時間,網(wǎng)上的資料大多年久失修,于是決定將整個過程記錄下來,分享給大家。
準(zhǔn)備:apt-get update
1. 安裝nginx并啟動apt-get install nginxsudo /etc/init.d/nginx start
2. 安裝php及相關(guān)sudo apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5-mysql
3. FastCGI在運行php站點之前需要先了解下FastCGI,F(xiàn)astCGI是一個可伸縮地、高速地在HTTP server和動態(tài)腳本語言間通信的接口,它采用C/S結(jié)構(gòu),可以將HTTP服務(wù)器和腳本解析服務(wù)器分開,當(dāng)HTTP服務(wù)器遇到動態(tài)請求時,會將請求轉(zhuǎn)發(fā)給FastCGI進程,F(xiàn)astCGI進程執(zhí)行動態(tài)腳本后再將結(jié)果返回給HTTP服務(wù)器,HTTP服務(wù)器最后將結(jié)果返回給瀏覽器,這在很大程度上提高了請求的響應(yīng)速度。
實現(xiàn)FastCGI有幾種方式,PHP-CGI、PHP-FPM、Spawn-FCGIPHP-CGI是PHP自帶的FastCGI管理器,啟動PHP-CGI可以使用如下命令:php-cgi -b 127.0.0.1:9000PHP-CGI有兩個問題,一是變更php.ini后需要重啟php-cgi才能生效,二是php-cgi進程崩潰或者被殺死后php就不能運行了。
PHP-FPM是從PHP 5.3.3之后新加入的CGI管理器,在更改PHP配置之后不需要重啟,且由于加入了守護進程,所以即使被殺死之后也能快速重啟。
Spawn-FCGI是一個通用的FastCGI管理器,而不僅僅只針對PHP一種腳本語言。但它在效率、CPU占用等方面都不如PHP-FPM。
4. PHP-FPM既然PHP-FPM的方式最好,那么我們現(xiàn)在就來配置一下。由于PHP-FPM是一個獨立的進程,所以需要與Nginx進行通信。目前有兩種通信方式,tcp和socket。兩種方式的區(qū)別和配置方式可以參見這兩篇文章:nginx 和 php-fpm 通信使用unix socket還是TCP,及其配置Php-fpm TcpSocket vs UnixSocket
在這里簡要說一下配置方式,兩種方式都主要修改nginx的配置文件(/etc/nginx/sites-available/default)和fpm的配置文件(/etc/php5/fpm/pool.d/www.conf)。
TCP配置方式需要將nginx配置文件中相應(yīng)的反向代理的fastcgi_pass參數(shù)改為127.0.0.1:9000,將fpm配置文件中的listen參數(shù)修改為127.0.0.1:9000。
Socket配置方式需要將nginx配置文件中相應(yīng)的反向代理的fastcgi_pass參數(shù)改為unix:/dev/shm/fpm-cgi.sock,將fpm配置文件中的listen參數(shù)修改為/dev/shm/fpm-cgi.sock,如果考慮到高并發(fā)可以將listen.backlog參數(shù)改為-1,內(nèi)存積壓無限大。另外,還可以提高內(nèi)核級別的并發(fā)連接數(shù),修改/etc/sysctl.conf:sudo echo 'net.core.somaxconn = 2048' >> /etc/sysctl.confsudo sysctl -p
兩種配置方式修改完之后都需要重啟php-fpm和nginx。sudo service php5-fpm restartsudo /etc/init.d/nginx reload
5. 運行php站點以上配置完成之后,我們就可以寫一個簡單的html' target='_blank'>php頁面來測試一下。創(chuàng)建一個網(wǎng)站目錄:sudo mkdir /var/www/
在nginx配置文件中修改root目錄為 root /var/www;添加一個測試頁面:sudo vi /var/www/test.php
加入以下代碼:<?php phpinfo();?>
此時在瀏覽器輸入地址http://localhost/test.php,就可以看到php的信息了。
常用命令:1. 檢查nginx啟動出錯sudo nginx -c /etc/nginx/nginx.conf -t
如果大家覺得對自己有幫助的話,還希望能幫頂一下,謝謝:)
個人博客:http://blog.csdn.net/zhaoxy2850
本文地址:http://blog.csdn.net/zhaoxy_thu/article/details/41851389
轉(zhuǎn)載請注明出處,謝謝!
PHP編程 鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。