PHP在Ubuntu上的部署有哪些技巧
小樊
40
2025-12-28 06:43:54
Ubuntu 上部署 PHP 的实用技巧
一 基础选型与安装
- 选择 Ubuntu LTS(20.04/22.04/24.04),获得更长安全支持;PHP 优先 8.1/8.2/8.3 的稳定小版本。需要新版可用 Ondřej Surý PPA:sudo add-apt-repository ppa:ondrej/php -y && sudo apt update。架构建议:高并发生产用 Nginx + PHP-FPM,传统项目可用 Apache + mod_php,也可 Apache + PHP-FPM 兼顾易用与性能。数据库建议 MySQL 8.0 或 MariaDB 10.6+,PHP 侧安装 php-mysql 驱动。
二 Web 服务器与 PHP 集成
- Nginx + PHP-FPM(生产推荐)
- 安装:sudo apt install -y nginx php-fpm php-mysql …
- 站点关键配置:
- location ~ .php$ {
- include snippets/fastcgi-php.conf;
- fastcgi_pass unix:/run/php/php8.3-fpm.sock; # 与已装版本一致
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- }
- 检查并重载:sudo nginx -t && sudo systemctl reload nginx
- Apache + PHP-FPM(兼顾易用与性能)
- 启用模块:sudo a2enmod proxy proxy_fcgi rewrite
- 虚拟主机 FilesMatch 规则:
- <FilesMatch .php$>
- SetHandler “proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost/”
-
- 启用站点并重启:sudo a2ensite your-app.conf && sudo systemctl reload apache2
- 验证:/var/www/html/info.php 写入 ,访问 http://IP/info.php。
三 性能优化要点
- 启用 OPcache(生产强烈建议):sudo phpenmod opcache && sudo systemctl reload apache2|nginx;php.ini 常用值:opcache.memory_consumption=128,opcache.max_accelerated_files=4000,opcache.revalidate_freq=60(开发可调小,生产可更大)。
- 优化 PHP-FPM 进程池(/etc/php/8.3/fpm/pool.d/www.conf):
- pm = dynamic
- pm.max_children = 50(按内存与业务评估)
- pm.start_servers = 10;pm.min_spare_servers = 5;pm.max_spare_servers = 20
- pm.max_requests = 1000(防内存泄漏)
- 页面与传输优化
- Nginx 开启 Gzip:gzip on; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; gzip_min_length 1024; gzip_comp_level 6;
- 静态资源由 Web 服务器直出,动态请求反向代理到 PHP-FPM。
- 引入缓存层:安装 Redis 或 Memcached 并加装对应扩展(php-redis/php-memcached),缓存热点数据与会话,降低数据库压力。
四 安全加固清单
- 全站 HTTPS(如 Let’s Encrypt),强制跳转;隐藏版本信息。
- 禁用危险函数:disable_functions = exec,system,passthru,shell_exec,popen,…
- 限制文件访问:open_basedir = /var/www/html:/tmp
- 仅安装必要扩展,及时更新系统与 PHP;数据库 最小权限原则、强口令与定期备份;关闭或限制 PHP-FPM 状态页 与未使用端口。
五 部署与排错速查
- 目录与权限:/var/www 及子目录属主 www-data,权限分层 755/644;上传代码后重启相应服务。
- 日志定位:Apache /var/log/apache2/error.log;Nginx /var/log/nginx/error.log;PHP-FPM 路径在 /etc/php/8.3/fpm/pool.d/www.conf 的 error_log。
- 常见问题
- 访问 PHP 页面空白或下载:确认 Web 服务器已正确处理 .php,检查 PHP-FPM 运行 与 socket 路径一致(如:/run/php/php8.3-fpm.sock)。
- 扩展缺失:按需安装,如 sudo apt install php8.3-gd php8.3-mbstring php8.3-zip。
- 配置语法错误:Nginx 执行 sudo nginx -t;Apache 执行 sudo apache2ctl configtest。
- 版本不匹配:CLI 与 FPM 版本需一致(php -v 与 php-fpm8.3 -v 输出应匹配)。