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"),其他服务器拉取(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集群的搭建,实现代码同步、负载均衡和高可用性。