温馨提示×

Debian上Nginx与PHP-FPM的集成方案

小樊
37
2025-12-06 01:09:30
栏目: 编程语言

Debian 上 Nginx 与 PHP-FPM 集成方案

一 架构与准备

  • 组件分工:Nginx 负责处理 HTTP/HTTPS 与静态资源,PHP-FPM 作为 FastCGI 进程管理器执行 PHP 脚本,二者通过 Unix 套接字TCP 端口通信。
  • 版本确认:先确认系统仓库中的 PHP 版本(如 7.4/8.0/8.2/8.3),后续路径与包名需与之匹配。
  • 基础环境:更新索引并安装 NginxPHP-FPM,启动并设置开机自启。
  • 防火墙:如使用 UFW,放行 HTTP/HTTPS 流量。
    以上做法为 Debian 上部署 LNMP 的通用起点。

二 安装与启用服务

  • 更新索引并安装软件包:
    sudo apt update
    sudo apt install nginx php-fpm
  • 启动并启用服务:
    sudo systemctl start nginx && sudo systemctl enable nginx
    sudo systemctl start php7.4-fpm && sudo systemctl enable php7.4-fpm
  • 说明:请将 7.4 替换为你的实际 PHP 版本(如 8.0/8.2/8.3)。
  • 可选防火墙:
    sudo ufw allow ‘Nginx Full’
    以上命令完成 NginxPHP-FPM 的安装与常驻化。

三 配置 PHP-FPM

  • 编辑池配置(示例路径,按版本调整):
    sudo nano /etc/php/7.4/fpm/pool.d/www.conf
  • 常用关键项(保持与 Nginx 运行用户一致,通常为 www-data):
    • 监听方式(二选一,推荐 Unix 套接字):
      • Unix 套接字:listen = /run/php/php7.4-fpm.sock
      • TCP 端口:listen = 127.0.0.1:9000
    • 权限与运行身份:
      listen.owner = www-data
      listen.group = www-data
      listen.mode = 0660
      user = www-data
      group = www-data
  • 应用并验证:
    sudo systemctl restart php7.4-fpm
    sudo systemctl status php7.4-fpm
    以上配置确保 PHP-FPM 以合适的身份与 Nginx 通信。

四 配置 Nginx 处理 PHP

  • 编辑站点配置(示例为默认站点):
    sudo nano /etc/nginx/sites-available/default
  • 核心配置片段:
    server {
    listen 80 default_server;
    listen [::]:80 default_server;
    root /var/www/html;
    index index.php index.html index.htm;
    server_name _;
    location / {
    try_files $uri $uri/ =404;
    }
    location ~ .php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 若用 TCP,改为 127.0.0.1:9000
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    }
    location ~ /.ht {
    deny all;
    }
    }
  • 语法检查与生效:
    sudo nginx -t
    sudo systemctl reload nginx
  • 说明:如使用 TCP 方式,将 fastcgi_pass 改为 127.0.0.1:9000 并确保 PHP-FPM 的 listen 与之对应。
    以上配置让 Nginx.php 请求转发给 PHP-FPM 执行。

五 测试与优化安全

  • 功能测试:
    echo “” | sudo tee /var/www/html/info.php
    浏览器访问:http://服务器IP/info.php,出现 PHP 信息页即成功;测试后建议删除该文件。
  • 性能与安全优化:
    • 进程与资源:在 PHP-FPM 池配置中按负载调整 pm.max_childrenpm.start_serverspm.min_spare_serverspm.max_spare_servers;可按需设置 php_admin_value[memory_limit]php_admin_value[max_execution_time]
    • 静态资源:为图片、CSS、JS 等配置缓存与压缩,减轻 PHP-FPM 压力。
    • 安全加固:限制上传大小、禁用危险函数、隐藏版本信息、仅允许必要方法;启用 HTTPS(如 Let’s Encrypt)。
    • 监控与维护:定期查看 NginxPHP-FPM 日志,监控请求速率与资源使用,按需调优。
      以上步骤完成验证并给出常见优化方向。

0