在Ubuntu系統中,使用PHP-FPM(FastCGI Process Manager)實現負載均衡通常涉及以下幾個步驟:
安裝PHP-FPM: 首先,確保你的系統上已經安裝了PHP-FPM。你可以使用以下命令來安裝:
sudo apt update
sudo apt install php-fpm
配置PHP-FPM池:
PHP-FPM使用池(pool)來管理PHP進程。默認情況下,Ubuntu可能已經為你配置了一個默認池。你可以在/etc/php/{version}/fpm/pool.d/www.conf文件中查看和編輯配置。
啟動多個PHP-FPM實例:
為了實現負載均衡,你需要啟動多個PHP-FPM實例。你可以通過復制默認池配置文件并修改其中的listen參數來實現。例如:
sudo cp /etc/php/{version}/fpm/pool.d/www.conf /etc/php/{version}/fpm/pool.d/www{1}.conf
sudo cp /etc/php/{version}/fpm/pool.d/www.conf /etc/php/{version}/fpm/pool.d/www{2}.conf
然后編輯這些文件,修改listen參數:
; www{1}.conf
listen = /run/php/php7.4-fpm-www1.sock
; www{2}.conf
listen = /run/php/php7.4-fpm-www2.sock
配置Nginx作為反向代理:
使用Nginx作為反向代理來分發請求到不同的PHP-FPM實例。編輯Nginx配置文件(通常位于/etc/nginx/sites-available/default),添加以下內容:
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 unix:/run/php/php7.4-fpm-www1.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /app2 {
try_files $uri $uri/ =404;
}
location ~ /app2\.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.4-fpm-www2.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
在這個配置中,/app2路徑下的請求會被分發到第二個PHP-FPM實例。
重啟服務: 重啟Nginx和PHP-FPM服務以應用更改:
sudo systemctl restart nginx
sudo systemctl restart php7.4-fpm
通過以上步驟,你可以在Ubuntu系統中使用PHP-FPM實現負載均衡。每個PHP-FPM實例可以運行在不同的服務器上,從而進一步提高系統的可擴展性和可靠性。