sudo apt update && sudo apt upgrade -y 或 sudo yum update -y)。sudo ufw disable/sudo systemctl stop firewalld),正式環境需配置放行規則。sudo apt install nginx php-fpm php-cli git -ysudo yum install epel-release && sudo yum install nginx php-fpm php-cli git -yPHP-FPM的主配置文件通常位于/etc/php/{version}/fpm/php-fpm.conf(如/etc/php/8.2/fpm/php-fpm.conf),其中include=/etc/php/{version}/fpm/pool.d/*.conf表示所有進程池配置通過pool.d目錄下的.conf文件加載。
pool.d目錄:cd /etc/php/{version}/fpm/pool.d/www1、www2為例):sudo cp www.conf www1.conf
sudo cp www.conf www2.conf
www1.conf(修改以下參數):[www1] # 池名稱,需唯一
user = www-data # 運行用戶(需與Nginx用戶一致)
group = www-data
listen = 192.168.1.101:9001 # 監聽IP(集群節點IP)和端口(需唯一)
listen.owner = www-data
listen.group = www-data
pm = dynamic # 進程管理模式(dynamic/on-demand/static)
pm.max_children = 10 # 最大進程數(根據內存計算:總內存/單個進程內存,如1G內存約50個進程)
pm.start_servers = 3 # 啟動時的進程數
pm.min_spare_servers = 2 # 最小空閑進程數
pm.max_spare_servers = 5 # 最大空閑進程數
slowlog = /var/log/php-fpm/www1-slow.log # 慢日志路徑
request_slowlog_timeout = 10s # 慢請求閾值(超過則記錄慢日志)
www2.conf(修改listen為192.168.1.102:9002,其余參數與www1.conf一致)。sudo systemctl restart php{version}-fpmsudo systemctl enable php{version}-fpmsudo systemctl status php{version}-fpm(確保狀態為active (running))編輯Nginx默認站點配置(/etc/nginx/sites-available/default或自定義配置文件):
http {
upstream php_backend { # 定義后端PHP-FPM集群
server 192.168.1.101:9001; # 指向www1池的IP和端口
server 192.168.1.102:9002; # 指向www2池的IP和端口
# 可添加更多節點:server 192.168.1.103:9003;
}
server {
listen 80;
server_name yourdomain.com; # 替換為你的域名
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404; # 靜態文件處理
}
location ~ \.php$ { # PHP請求轉發到PHP-FPM集群
include snippets/fastcgi-php.conf;
fastcgi_pass php_backend; # 引用upstream定義的集群
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
sudo nginx -t(若提示syntax is ok,繼續下一步)sudo systemctl reload nginx192.168.1.101)初始化Git倉庫:cd /var/www/html
sudo git init
sudo git add .
sudo git commit -m "Initial commit"
cd /var/www/html
sudo git clone ssh://user@192.168.1.101/var/www/html.git . # 替換為你的用戶名和IP
git commit -am "update"),其他服務器拉?。?code>git pull origin master)即可同步。/var/www/html創建測試文件info.php:<?php phpinfo(); ?>
http://yourdomain.com/info.php,若顯示PHP信息頁面且無502錯誤,說明配置成功。/var/log/nginx/access.log),刷新頁面多次,觀察請求是否交替分發到不同PHP-FPM節點(如192.168.1.101:9001和192.168.1.102:9002)。htop(實時進程監控)、netstat -tulnp | grep php-fpm(查看監聽端口)監控進程狀態。slowlog)和Nginx錯誤日志,使用ELK(Elasticsearch+Logstash+Kibana)或Loki進行分析。pm.max_children(如8G內存、每個進程占用20M,則pm.max_children=400)。listen.mode=0666且Nginx用戶有訪問權限。通過以上步驟,即可完成Linux環境下PHP-FPM集群的搭建,實現代碼同步、負載均衡和高可用性。