Ubuntu上配置nginx+php+fastcgi的流程

來源:互聯網
上載者:User
這兩天需要在Ubuntu14.04上搭建nginx和php的環境,配置的過程中在fastcgi的問題上花了很多時間,網上的資料大多年久失修,於是決定將整個過程記錄下來,分享給大家。


準備:

apt-get update


1. 安裝nginx並啟動

apt-get install nginxsudo /etc/init.d/nginx start

2. 安裝php及相關

sudo apt-get install php5-cli php5-cgi php5-fpm php5-mcrypt php5-mysql

3. FastCGI

在運行php網站之前需要先瞭解下FastCGI,FastCGI是一個可伸縮地、高速地在HTTP server和動態指令碼語言間通訊的介面,它採用C/S結構,可以將HTTP伺服器和指令碼解析伺服器分開,當HTTP伺服器遇到動態請求時,會將請求轉寄給FastCGI進程,FastCGI進程執行動態指令碼後再將結果返回給HTTP伺服器,HTTP伺服器最後將結果返回給瀏覽器,這在很大程度上提高了請求的響應速度。


實現FastCGI有幾種方式,PHP-CGI、PHP-FPM、Spawn-FCGI

PHP-CGI是PHP內建的FastCGI管理器,啟動PHP-CGI可以使用如下命令:

php-cgi -b 127.0.0.1:9000

PHP-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的方式最好,那麼我們現在就來配置一下。由於PHP-FPM是一個獨立的進程,所以需要與Nginx進行通訊。目前有兩種通訊方式,tcp和socket。兩種方式的區別和配置方式可以參見這兩篇文章:

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設定檔中相應的反向 Proxy的fastcgi_pass參數改為127.0.0.1:9000,將fpm設定檔中的listen參數修改為127.0.0.1:9000。


Socket配置方式需要將nginx設定檔中相應的反向 Proxy的fastcgi_pass參數改為unix:/dev/shm/fpm-cgi.sock,將fpm設定檔中的listen參數修改為/dev/shm/fpm-cgi.sock,如果考慮到高並發可以將listen.backlog參數改為-1,記憶體積壓無限大。另外,還可以提高核心層級的並發串連數,修改/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網站

以上配置完成之後,我們就可以寫一個簡單的php頁面來測試一下。

建立一個網站目錄:

sudo mkdir /var/www/

在nginx設定檔中修改root目錄為 root /var/www;

添加一個測試頁面:

sudo vi /var/www/test.php

加入以下代碼:

 

此時在瀏覽器輸入地址http://localhost/test.php,就可以看到php的資訊了。


常用命令:

1. 檢查nginx啟動出錯

sudo nginx -c /etc/nginx/nginx.conf -t


如果大家覺得對自己有協助的話,還希望能幫頂一下,謝謝:)
個人部落格:http://blog.csdn.net/zhaoxy2850
本文地址:
轉載請註明出處,謝謝!

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.