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 日志)。