在現(xiàn)代 Web 開(kāi)發(fā)中,PHP 與 Nginx 是兩種常見(jiàn)的技術(shù)棧,它們通常搭配使用以提供高效、快速的 Web 服務(wù)。Ubuntu 22.04 LTS(簡(jiǎn)稱 Ubuntu 22)是一個(gè)廣泛使用的 Linux 發(fā)行版,適用于構(gòu)建和部署各種 Web 應(yīng)用程序。本文將詳細(xì)介紹在 Ubuntu 22 上如何配置和優(yōu)化 PHP 與 Nginx,以提高網(wǎng)站的性能和穩(wěn)定性。通過(guò)合適的配置和優(yōu)化,你的 Web 服務(wù)將能夠處理更多的并發(fā)請(qǐng)求,降低服務(wù)器資源消耗,從而提升整體響應(yīng)速度和用戶體驗(yàn)。
一、安裝和配置 Nginx
在開(kāi)始配置之前,我們首先需要安裝 Nginx 以及 PHP 的相關(guān)依賴包。在 Ubuntu 22 上,可以通過(guò) APT 包管理工具輕松安裝這些組件。
sudo apt update sudo apt install nginx sudo apt install php-fpm php-mysql php-cli php-mbstring php-xml php-curl php-zip
安裝完成后,啟動(dòng) Nginx 服務(wù)并設(shè)置為開(kāi)機(jī)自啟:
sudo systemctl start nginx sudo systemctl enable nginx
接下來(lái),我們需要檢查 Nginx 是否正確安裝并運(yùn)行。在瀏覽器中輸入服務(wù)器的 IP 地址或域名,如果看到默認(rèn)的 Nginx 歡迎頁(yè)面,說(shuō)明安裝成功。
二、配置 PHP-FPM
PHP-FPM(FastCGI Process Manager)是 PHP 的一個(gè)進(jìn)程管理器,專門用于處理 PHP 請(qǐng)求。在 Nginx 中,PHP-FPM 與 Nginx 通過(guò) FastCGI 協(xié)議進(jìn)行通信,因此需要正確配置 PHP-FPM 才能使 Nginx 和 PHP 一起工作。
PHP-FPM 的配置文件位于 "/etc/php/8.1/fpm/php.ini" 和 "/etc/php/8.1/fpm/pool.d/www.conf"。在這兩個(gè)文件中,我們可以調(diào)整 PHP 的內(nèi)存限制、執(zhí)行時(shí)間等參數(shù),以優(yōu)化性能。
修改 php.ini 文件:
打開(kāi) php.ini 文件并根據(jù)需要調(diào)整一些重要參數(shù),例如:
sudo nano /etc/php/8.1/fpm/php.ini
在文件中,找到并修改以下配置項(xiàng):
memory_limit = 256M max_execution_time = 30 upload_max_filesize = 10M post_max_size = 20M
這些配置項(xiàng)影響 PHP 的內(nèi)存使用、腳本執(zhí)行時(shí)間和文件上傳限制,適當(dāng)調(diào)整可以提高性能或避免資源瓶頸。
修改 PHP-FPM 池配置:
接下來(lái),我們需要配置 PHP-FPM 池設(shè)置。打開(kāi) "/etc/php/8.1/fpm/pool.d/www.conf" 文件并做如下調(diào)整:
sudo nano /etc/php/8.1/fpm/pool.d/www.conf
在該文件中,以下幾個(gè)設(shè)置對(duì)于性能優(yōu)化至關(guān)重要:
pm = dynamic pm.max_children = 50 pm.start_servers = 5 pm.min_spare_servers = 5 pm.max_spare_servers = 35
這些設(shè)置指定了 PHP-FPM 子進(jìn)程的數(shù)量和啟動(dòng)行為,能夠有效管理服務(wù)器的負(fù)載。如果你的應(yīng)用需要處理大量并發(fā)請(qǐng)求,可以適當(dāng)增加 "pm.max_children" 的值。
三、配置 Nginx 與 PHP-FPM 連接
在 Nginx 配置文件中,我們需要將 PHP 請(qǐng)求轉(zhuǎn)發(fā)給 PHP-FPM。Nginx 的配置文件通常位于 "/etc/nginx/sites-available/default",可以使用編輯器打開(kāi)并修改:
sudo nano /etc/nginx/sites-available/default
找到以下部分:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
index index.php index.html index.htm;
server_name _;
location / {
try_files $uri $uri/ =404;
}
# PHP-FPM 配置
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}配置中的 "fastcgi_pass" 指令指定了 PHP-FPM 的 Unix 套接字路徑,確保與 PHP-FPM 正常通信。如果你使用 TCP/IP 連接 PHP-FPM,也可以使用類似 "fastcgi_pass 127.0.0.1:9000;" 的設(shè)置。
保存文件并退出編輯器后,測(cè)試 Nginx 配置是否正確:
sudo nginx -t
如果測(cè)試通過(guò),重新加載 Nginx 配置:
sudo systemctl reload nginx
四、優(yōu)化 Nginx 配置
為了提高 Nginx 的性能,可以調(diào)整其配置文件,特別是以下幾個(gè)方面:
1. 增加工作進(jìn)程數(shù)
根據(jù)你的服務(wù)器 CPU 核心數(shù),適當(dāng)增加 Nginx 的工作進(jìn)程數(shù)。這將有助于處理更多的并發(fā)請(qǐng)求??梢酝ㄟ^(guò)編輯 Nginx 配置文件中的 "worker_processes" 參數(shù)來(lái)調(diào)整:
worker_processes auto;
2. 調(diào)整 worker_connections
"worker_connections" 控制每個(gè)工作進(jìn)程能夠處理的最大連接數(shù)。增大該值可以提高并發(fā)能力,尤其是當(dāng)你的服務(wù)器有大量并發(fā)連接時(shí)。
worker_connections 1024;
3. 開(kāi)啟 gzip 壓縮
啟用 Gzip 壓縮可以減少傳輸數(shù)據(jù)的大小,從而提高網(wǎng)站加載速度。可以在 Nginx 配置文件中開(kāi)啟 Gzip:
gzip on; gzip_types text/plain text/css application/javascript application/json application/xml; gzip_vary on; gzip_min_length 1000;
4. 配置緩存
緩存是提高 Web 應(yīng)用性能的重要手段,Nginx 允許我們通過(guò)配置緩存來(lái)減少后端服務(wù)器的負(fù)載。例如,可以使用 "proxy_cache" 指令來(lái)緩存靜態(tài)資源。
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache_zone:10m max_size=1g inactive=60m use_temp_path=off;
五、使用 OPcache 提高 PHP 性能
OPcache 是一個(gè) PHP 擴(kuò)展,用于緩存已經(jīng)編譯過(guò)的 PHP 字節(jié)碼,從而減少每次請(qǐng)求時(shí)的編譯開(kāi)銷。啟用 OPcache 可以顯著提高 PHP 腳本的執(zhí)行效率。
要啟用 OPcache,首先確保 PHP 安裝了 OPcache 擴(kuò)展,并在 "php.ini" 文件中進(jìn)行配置:
sudo nano /etc/php/8.1/fpm/php.ini
在文件中找到以下配置并取消注釋:
opcache.enable=1 opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60
這些設(shè)置將啟用 OPcache,分配內(nèi)存并配置緩存大小。適當(dāng)增加 "opcache.memory_consumption" 的值可以提高緩存的容量。
六、監(jiān)控與調(diào)優(yōu)
在部署和優(yōu)化 Nginx 與 PHP 后,定期的監(jiān)控和性能調(diào)優(yōu)是必不可少的。你可以使用工具如 "htop"、"top"、"iotop" 來(lái)監(jiān)控服務(wù)器的 CPU 和內(nèi)存使用情況,或者使用 Nginx 自帶的日志功能來(lái)跟蹤請(qǐng)求。
另外,還可以使用一些工具如 New Relic 或 Datadog 來(lái)對(duì) PHP 和 Nginx 進(jìn)行深度監(jiān)控,幫助你識(shí)別瓶頸并進(jìn)行針對(duì)性優(yōu)化。
總結(jié)
本文介紹了如何在 Ubuntu 22 上配置和優(yōu)化 PHP 與 Nginx,涵蓋了從基礎(chǔ)的安裝配置到深入的性能調(diào)優(yōu)。通過(guò)合理配置 PHP-FPM、Nginx 和開(kāi)啟 OPcache,你的 Web 服務(wù)將變得更加高效,能夠處理更多的請(qǐng)求,減少資源消耗。希望這篇文章對(duì)你優(yōu)化 PHP 與 Nginx 配置有所幫助,提升你的 Web 應(yīng)用性能。