温馨提示×

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.0MariaDB 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
  • 引入缓存层:安装 RedisMemcached 并加装对应扩展(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 输出应匹配)。

0