在Ubuntu上使用PHP-FPM實現負載均衡,通常需要結合Nginx或Apache等Web服務器。以下是使用Nginx作為反向代理服務器來實現PHP-FPM負載均衡的步驟:
首先,確保你已經安裝了Nginx和PHP-FPM。如果沒有安裝,可以使用以下命令進行安裝:
sudo apt update
sudo apt install nginx php-fpm
編輯PHP-FPM配置文件,通常位于/etc/php/7.x/fpm/pool.d/www.conf
(根據你的PHP版本調整路徑)。
sudo nano /etc/php/7.x/fpm/pool.d/www.conf
找到并修改以下行,設置監聽地址為Unix socket:
listen = /run/php/php7.x-fpm.sock
然后重啟PHP-FPM服務:
sudo systemctl restart php7.x-fpm
編輯Nginx配置文件,通常位于/etc/nginx/sites-available/default
。
sudo nano /etc/nginx/sites-available/default
在server
塊中添加以下內容:
upstream php_backend {
server unix:/run/php/php7.x-fpm.sock;
# 可以添加多個PHP-FPM實例
# server unix:/run/php/php7.x-fpm2.sock;
# server unix:/run/php/php7.x-fpm3.sock;
}
server {
listen 80;
server_name your_domain.com;
root /var/www/html;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass php_backend;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
創建一個符號鏈接以啟用Nginx配置:
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
測試Nginx配置是否正確:
sudo nginx -t
如果沒有錯誤,重啟Nginx服務:
sudo systemctl restart nginx
如果你有多個PHP-FPM實例,可以在upstream
塊中添加它們,并在fastcgi_pass
中使用不同的后端地址。
例如,添加第二個PHP-FPM實例:
upstream php_backend {
server unix:/run/php/php7.x-fpm.sock;
server unix:/run/php/php7.x-fpm2.sock;
}
然后重啟Nginx服務:
sudo systemctl restart nginx
Nginx支持多種負載均衡策略,如輪詢(默認)、最少連接、IP哈希等。你可以在upstream
塊中指定策略:
upstream php_backend {
least_conn;
server unix:/run/php/php7.x-fpm.sock;
server unix:/run/php/php7.x-fpm2.sock;
}
通過以上步驟,你可以在Ubuntu上使用Nginx和PHP-FPM實現負載均衡。確保你的PHP-FPM實例配置正確,并且Nginx能夠正確地將請求轉發到這些實例。