nginx和php是目前非常常用的開發環境組合。nginx是一個高性能的開源Web服務器,它可以作為反向代理、負載均衡器和HTTP緩存。php是一種開源腳本語言,用于Web開發。當nginx和php在一起使用時,可以提供快速、安全和可靠的Web應用程序。
一般情況下,nginx 和 php 之間的交互都是通過 fastCGI 協議實現的。FastCGI是一種可重用、開放、多線程協議,它允許Web服務器(例如nginx)向Web應用服務器(例如php-fpm)發送請求。也就是說,nginx 接收到客戶端請求,然后把請求轉發給 php-fpm 處理,php-fpm 處理完返回結果后,nginx 再將結果返回給客戶端。這一過程的示意圖如下。
```nginx
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
```
上述 nginx 配置文件將請求之后綴為 .php 的請求轉發給 php-fpm 進程。接下來,讓我們詳細介紹如何搭建 nginx 和 php 環境。
安裝nginx
---
在Ubuntu上安裝nginx非常簡單:
```bash
sudo apt update
sudo apt install nginx
```
安裝完成后,就可以啟動nginx服務了:
```bash
sudo systemctl start nginx
```
安裝PHP
---
Ubuntu 18.04附帶的默認php版本是7.2。要獲得更多的php功能,可以添加 PPA(個人軟件包存儲庫),通過PBA安裝php最新版本:
```bash
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
sudo apt install php7.4 php7.4-fpm php7.4-mysql php7.4-gd php7.4-xml php7.4-curl php7.4-mbstring
```
上述命令將安裝PHP7.4及其一些常見擴展(例如mysql、gd等)。安裝完成后,可以通過如下命令啟動php-fpm進程:
```bash
sudo systemctl start php7.4-fpm
```
整合nginx和php
---
默認情況下,nginx使用html文件作為根目錄,如果希望在nginx中使用php文件,則需要在nginx配置文件中進行更改。我們可以在/etc/nginx/sites-available/default文件中找到以下內容:
```nginx
location / {
# First attempt to serve request as file, then fallback to index.html
try_files $uri $uri/ =404;
}
```
要支持 php,我們需要添加以下內容:
```nginx
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
}
```
上述配置文件在請求路徑中找到 .php 后綴匹配,然后使用fastcgi將該請求轉發到php-fpm進程。雖然我們已經在前面的 article 中介紹過了,此處仍然再次提示,需要配置php-fpm的監聽端口和SOCK文件來匹配 nginx 的要求。
最后,重新載入 nginx:
```bash
sudo systemctl reload nginx
```
總結
---
nginx和php是開發Web應用時常用的組合,有效地提高了Web應用程序的性能和安全性。正確地安裝和配置nginx和php組合,能夠讓開發工作變得更加簡單和愉快。希望對大家有用!
上一篇nginx php 慢
下一篇nginx php 擴展