温馨提示×

Debian PHP服务如何部署

小樊
31
2025-12-24 20:25:07
栏目: 编程语言

Debian PHP 服务部署指南

一 环境准备与版本确认

  • 更新索引并升级系统:
    • sudo apt update && sudo apt upgrade -y
  • 确认可用 PHP 版本与模块:
    • apt search php | grep -E ‘^php[0-9.]±fpm’
    • 常见扩展按需安装:php-curl、php-gd、php-mbstring、php-xml、php-zip、php-mysql 等
  • 注意:不同 Debian 版本的默认 PHP 主次版本不同,后续配置路径与 socket 名称需与实际版本一致(如 7.4、8.2)。

二 方案一 Apache + mod_php(快速上手)

  • 安装组件:
    • sudo apt install apache2 libapache2-mod-php php php-mysql
  • 常用优化与模块:
    • 启用重写:sudo a2enmod rewrite
    • 按需启用其他模块(如 ssl、headers 等)
  • 重启生效:
    • sudo systemctl restart apache2
  • 验证:
    • echo “” | sudo tee /var/www/html/info.php
    • 浏览器访问:http://服务器IP/info.php。

三 方案二 Nginx + PHP-FPM(推荐生产)

  • 安装组件:
    • sudo apt install nginx php-fpm php-mysql
  • 配置 PHP-FPM(以实际版本为例,如 8.2):
    • 编辑池配置:sudo nano /etc/php/8.2/fpm/pool.d/www.conf
      • 保持或设置:listen = /run/php/php8.2-fpm.sock
      • 确保运行用户/组:user = www-data,group = www-data
      • 如改用 TCP:listen = 127.0.0.1:9000(需同步修改 Nginx 的 fastcgi_pass)
    • 启动与开机自启:
      • sudo systemctl start php8.2-fpm
      • sudo systemctl enable php8.2-fpm
  • 配置 Nginx 站点(/etc/nginx/sites-available/default):
    • 示例:
      • server {
        • listen 80 default_server;
        • root /var/www/html;
        • index index.php index.html;
        • server_name _;
        • location / { try_files $uri $uri/ =404; }
        • location ~ .php$ {
          • include snippets/fastcgi-php.conf;
          • fastcgi_pass unix:/run/php/php8.2-fpm.sock;
          • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
          • include fastcgi_params;
        • }
        • location ~ /.ht { deny all; }
      • }
    • 语法检查与生效:
      • sudo nginx -t && sudo systemctl restart nginx
  • 验证:
    • echo “” | sudo tee /var/www/html/info.php
    • 浏览器访问:http://服务器IP/info.php。

四 防火墙与 HTTPS

  • 防火墙放行(示例 UFW):
    • sudo ufw allow ‘Nginx Full’ 或 sudo ufw allow 80,443/tcp
    • sudo ufw enable
  • 申请并配置 Let’s Encrypt 证书(certbot):
    • sudo apt install certbot python3-certbot-nginx
    • sudo certbot --nginx -d your_domain
    • 按提示自动配置 HTTPS 并开启自动续期。

五 常见问题与优化

  • 502 Bad Gateway / No input file specified:
    • 核对 Nginx fastcgi_pass 与 PHP-FPM 的 listen 一致(socket 路径或 127.0.0.1:9000)。
    • 确认 PHP-FPM 已启动:systemctl status php*-fpm;检查 socket 文件是否存在:ls -l /run/php/。
    • 在 Nginx 的 PHP location 中确保存在:fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  • 权限与目录:
    • Web 目录属主建议为 www-data:www-data,权限 755/644;SELinux/AppArmor 场景下按需放行。
  • 性能与运维:
    • 启用 OPcache(生产推荐):在相应 php.ini 中设置 opcache.enable=1,并调整 opcache.memory_consumption、opcache.interned_strings_buffer、opcache.max_accelerated_files 等参数。
    • FPM 进程管理:根据负载调整 pm.max_children、pm.start_servers、pm.min_spare_servers、pm.max_spare_servers;必要时开启慢日志 slowlog 与 request_slowlog_timeout 定位慢请求。
    • 日志排查:Nginx 错误日志(/var/log/nginx/error.log)、PHP-FPM 日志(/var/log/php*-fpm.log 或 pool 日志)。

0