Unix 系統(tǒng)下的 Nginx 1.4.x

本文檔包括使用 PHP-FPM 為 Nginx 1.4.x HTTP 服務器安裝和配置 PHP 的說明和提示。

本指南假定您已經(jīng)從源代碼成功構(gòu)建 Nginx,并且其二進制文件和配置文件都位于 /usr/local/nginx。 如果您使用其他方式獲取的 Nginx,請參考 ? Nginx Wiki 并對照本文檔完成安裝。

本文檔僅包含 Nginx 服務器的基本配置,它將通過 80 端口提供 PHP 應用的處理能力。 如果您需要超出本文檔范圍的安裝配置指導,建議您查閱 Nginx 和 PHP-FPM 的文檔。

需要注意的是,本文檔一律使用 'x' 來表示版本號,請根據(jù)實際情況將 'x' 替換為對應的版本號。

  1. 建議您訪問 Nginx Wiki ? 安裝 頁面以獲取并在您的系統(tǒng)上安裝 Nginx。

  2. 獲取并解壓 PHP 源代碼:

    tar zxf php-x.x.x
    
  3. 配置并構(gòu)建 PHP。在此步驟您可以使用很多選項自定義 PHP,例如啟用某些擴展等。 運行 ./configure --help 命令來獲得完整的可用選項清單。 在本示例中,我們僅進行包含 PHP-FPM 和 MySQL 支持的簡單配置。

    cd ../php-x.x.x
    ./configure --enable-fpm --with-mysql
    make
    sudo make install
    
  4. 創(chuàng)建配置文件,并將其復制到正確的位置。

    cp php.ini-development /usr/local/php/php.ini
    cp /usr/local/etc/php-fpm.d/www.conf.default /usr/local/etc/php-fpm.d/www.conf
    cp sapi/fpm/php-fpm /usr/local/bin
    
  5. 需要著重提醒的是,如果文件不存在,則阻止 Nginx 將請求發(fā)送到后端的 PHP-FPM 模塊, 以避免遭受惡意腳本注入的攻擊。

    將 php.ini 文件中的配置項 cgi.fix_pathinfo 設(shè)置為 0

    打開 php.ini:

    vim /usr/local/php/php.ini
    

    定位到 cgi.fix_pathinfo= 并將其修改為如下所示:

    cgi.fix_pathinfo=0
    
  6. 在啟動服務之前,需要修改 php-fpm.conf 配置文件,確保 php-fpm 模塊使用 www-data 用戶和 www-data 用戶組的身份運行。

    vim /usr/local/etc/php-fpm.d/www.conf
    

    找到以下內(nèi)容并修改:

    ; Unix user/group of processes
    ; Note: The user is mandatory. If the group is not set, the default user's group
    ;       will be used.
    user = www-data
    group = www-data
    

    然后啟動 php-fpm 服務:

    /usr/local/bin/php-fpm
    

    本文檔未涵蓋對 php-fpm 進行進一步配置的信息,如果您需要更多信息,請查閱相關(guān)文檔。

  7. 配置 Nginx 使其支持 PHP 應用:

    vim /usr/local/nginx/conf/nginx.conf
    

    修改默認的 location 塊,使其支持 .php 文件:

    location / {
        root   html;
        index  index.php index.html index.htm;
    }

    下一步配置來保證對于 .php 文件的請求將被傳送到后端的 PHP-FPM 模塊, 取消默認的 PHP 配置塊的注釋,并修改為下面的內(nèi)容:

    location ~* \.php$ {
        fastcgi_index   index.php;
        fastcgi_pass    127.0.0.1:9000;
        include         fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
        fastcgi_param   SCRIPT_NAME        $fastcgi_script_name;
    }

    重啟 Nginx。

    sudo /usr/local/nginx/sbin/nginx -s stop
    sudo /usr/local/nginx/sbin/nginx
    
  8. 創(chuàng)建測試文件。

    rm /usr/local/nginx/html/index.html
    echo "<?php phpinfo(); ?>" >> /usr/local/nginx/html/index.php
    

    打開瀏覽器,訪問 http://localhost,將會顯示 phpinfo() 。

通過以上步驟的配置,Nginx 服務器現(xiàn)在可以以 SAPI SAPI 模塊的方式支持 PHP 應用了。 當然,對于 Nginx 和 PHP 的配置,還有很多可用的選項, 請在對應的源代碼目錄執(zhí)行 ./configure --help 來查閱更多配置選項。