溫馨提示×

Linux PHP-FPM集群搭建指南

小樊
49
2025-09-18 14:34:22
欄目: 編程語言

Linux環境下PHP-FPM集群搭建指南

一、準備工作

1. 服務器環境

  • 至少準備2臺及以上Linux服務器(推薦CentOS 7+/Ubuntu 20.04+),確保系統已更新(sudo apt update && sudo apt upgrade -ysudo yum update -y)。
  • 所有服務器需處于同一局域網或可通過公網互相訪問,關閉防火墻臨時測試(sudo ufw disable/sudo systemctl stop firewalld),正式環境需配置放行規則。

2. 基礎工具安裝

  • 每臺服務器安裝Nginx(Web服務器)、PHP-FPM(PHP進程管理)、Git(代碼同步):
    • Ubuntu/Debian:sudo apt install nginx php-fpm php-cli git -y
    • CentOS/RHEL:sudo yum install epel-release && sudo yum install nginx php-fpm php-cli git -y

二、PHP-FPM集群配置

1. 主配置文件說明

PHP-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文件加載。

2. 創建進程池配置

  • 進入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(修改listen192.168.1.102:9002,其余參數與www1.conf一致)。

3. 啟動PHP-FPM服務

  • 重啟PHP-FPM使配置生效:sudo systemctl restart php{version}-fpm
  • 設置開機自啟:sudo systemctl enable php{version}-fpm
  • 檢查進程狀態:sudo systemctl status php{version}-fpm(確保狀態為active (running)

三、Nginx負載均衡配置

1. 修改Nginx配置

編輯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;
        }
    }
}

2. 測試并重載Nginx

  • 檢查Nginx配置語法:sudo nginx -t(若提示syntax is ok,繼續下一步)
  • 重載Nginx:sudo systemctl reload nginx

四、代碼同步配置

1. 使用Git同步代碼

  • 主服務器(如192.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)即可同步。

五、測試與驗證

1. 測試PHP解析

  • /var/www/html創建測試文件info.php
    <?php phpinfo(); ?>
    
  • 訪問http://yourdomain.com/info.php,若顯示PHP信息頁面且無502錯誤,說明配置成功。

2. 驗證負載均衡

  • 查看Nginx訪問日志(/var/log/nginx/access.log),刷新頁面多次,觀察請求是否交替分發到不同PHP-FPM節點(如192.168.1.101:9001192.168.1.102:9002)。

六、優化與維護

1. 監控與告警

  • 使用htop(實時進程監控)、netstat -tulnp | grep php-fpm(查看監聽端口)監控進程狀態。
  • 配置Prometheus+Grafana監控集群性能(如CPU、內存、請求響應時間)。

2. 日志管理

  • 集中收集PHP-FPM慢日志(slowlog)和Nginx錯誤日志,使用ELK(Elasticsearch+Logstash+Kibana)或Loki進行分析。

3. 性能調優

  • 根據服務器內存調整pm.max_children(如8G內存、每個進程占用20M,則pm.max_children=400)。
  • 若使用Unix Socket替代TCP端口(同一服務器內通信),需確保listen.mode=0666且Nginx用戶有訪問權限。

通過以上步驟,即可完成Linux環境下PHP-FPM集群的搭建,實現代碼同步、負載均衡和高可用性。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女