如何在Nginx下配置PHP程序環境


1.nginx與PHP的關系

 

首先來看nginxphp的關系,

FastCGI的關系(而不是像apache那樣安裝成nginx的模塊)

 

FastCGI的意思是, 快速的通用網關接口:CGI Common Gateway Interface, 通用網關接口, 典型的web服務器與處理程序通訊的方式.

FPM, PHP'提供的用於管理FastCGI進程的功能.

 

2.安裝帶有FPM功能的PHP

 

linux

 

還是之前的PHP源碼包, 還是原來的安裝步驟.

僅僅在配置PHP安裝時, 增加選項,開啟FPM即可:

--enable-fpm

安裝過程沒有變化!

windows

 

可以提供FPM功能, 默認都提供:

php-cgi.exe 完成.

 

基本不需要處理. 一點, TSNTS的選擇需要注意:

以模塊的方式安裝, 通常需要安裝TS版本, 線程安全版本.

FPM的形式安裝, 建議安裝NTS版本, 非線程安全版本.

解壓, 拷貝即可. 不需要配置與web服務器的模塊加載.

3.管理PHP-FPM

 

PHPFPM需要獨立運行, 自己的獨立的配置文件. 等等.

默認情況下, FPM監聽某個(127.0.0.1:9000)端口, 等待nginx(或者其他的web服務器)將請求轉過來.

由於PHP獨立運行了, 再修改PHP的配置, 就不需要重啟web服務器(nginx), 重啟PHP-FPM即可.

僅僅去參考 nginxPHP來看: 理解成: NginxPHP的客戶端, PHPnginx提供服務(執行PHP程序的服務).

 

fpm的配置文件

 

先拷貝獲取fpm的獨立配置文件, etc/目錄中:

編輯 etc/php-fpm.conf

幾個必要的配置

 

1.守護進程化(后台執行)

2.運行用戶

3.所監聽的IP和端口

4.主進程號

 

開啟, 關閉, 重載配置操作

 

開啟: sbin/php-fpm

 

通過信號的方式, 進行重啟, 關閉, 重載配置文件等處理:

停止:kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

平滑停止:kill -QUIT `cat /usr/local/php/var/run/php-fpm.pid`

重啟:kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

重新打開日志:kill -USR1 `cat /usr/local/php/var/run/php-fpm.pid`

 

 

4.配置Nginx將PHP請求轉發給PHP-FPM

 

nginx的配置文件結構:

http段的server, 就表示一台主機(虛擬主機).

 

在每台虛擬主機, server段中, 提供對請求腳本的解析工作:

location指令, 匹配請求的URL腳本. .php結尾的請求, 交給PHP-FPM處理:

示例配置如下:

 

重新加載nginx

建立phpinfo.php測試文件

 

測試效果, 要保證 nginxPHP-FPM都執行.

 

5.將php.ini放在合理的目錄

 

拷貝默認配置

修改必要的配置

 

6.重啟 php-fpm

 

 

 

7.虛擬主機的配置

 

虛擬主機

 

http中的server就是一個虛擬主機,增加server段, 就是增加虛擬主機:

重啟nginx

 

建立測試項目

 

還是通過git clone, 配置nginx虛擬主機后出現404Not Found 測試發現動作不能被解析

原因是Nginx對pathinfo不支持

 

pathinfo: URL的一部分, 請求腳本到請求參數間的部分, 稱之為pathinfo.

PHP程序要處理pathinfo, 前提是web服務器支持URLpathinfo部分才可以.

解決方法:通過額外的解析pathinfo指令可以完成:

location ~ \.php$ 解析段中, 增加分析pathinfo的功能:

nginx.conf:

重啟nginx sbin/nginx -s reload

此時pathinfourl的就可以解析.到此Nginx下配置php虛擬主機到此結束。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM