温馨提示×

PHP配置Ubuntu服务器有哪些技巧

小樊
44
2025-12-06 15:10:48
栏目: 云计算

Ubuntu 服务器上配置 PHP 的实用技巧

一 基础安装与多版本管理

  • 更新索引并安装所需组件(以 Ubuntu 20.04/22.04 为例,按需替换版本号):
    • sudo apt update && sudo apt install php php-cli php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-bcmath
  • 查看与切换版本:
    • 查看:php -v;查找 php.ini:php --ini(注意区分 CLIFPM/Apache 的配置路径)
  • 多版本并存与切换(示例为 7.4/8.0/8.1/8.2):
    • 安装多个版本:sudo apt install php7.4 php8.0 php8.1 php8.2
    • 使用 update-alternatives 设置默认 CLI:
      • sudo update-alternatives --set php /usr/bin/php8.1
    • 为 Web 选择版本:在 Apache 使用 a2enmod/a2dismod,在 Nginx 调整 fastcgi_pass 指向对应版本的 PHP-FPM socket(如:/var/run/php/php8.1-fpm.sock)

二 核心配置与性能优化

  • 编辑正确的 php.ini(两处常见位置):
    • Apache:/etc/php/{version}/apache2/php.ini
    • FPM/CLI:/etc/php/{version}/fpm/php.ini 或 /etc/php/{version}/cli/php.ini
  • 常用运行时参数(按应用调优):
    • memory_limit = 128M–256M
    • max_execution_time = 30–60
    • upload_max_filesize = 10M–50M
    • post_max_size 与上传上限匹配
  • 启用并调优 OPcache(建议生产环境开启):
    • 安装:sudo apt install php**{version}**-opcache
    • 配置示例:
      • opcache.enable=1
      • opcache.memory_consumption=64–128
      • opcache.max_accelerated_files=4000–10000
      • opcache.validate_timestamps=0(生产建议关闭,配合部署后重启 FPM)
  • 使用 PHP-FPM 并优化进程管理(/etc/php/{version}/fpm/pool.d/www.conf):
    • pm = dynamic
    • pm.max_children = 50(依据内存与单进程占用计算)
    • pm.start_servers = 5
    • pm.min_spare_servers = 5
    • pm.max_spare_servers = 35
    • pm.max_requests = 500(防内存泄漏)
  • 修改后重启生效:
    • Apache:sudo systemctl restart apache2
    • PHP-FPM:sudo systemctl restart php**{version}**-fpm

三 与 Web 服务器集成要点

  • Nginx 典型配置片段:
    • location ~ .php$ {
      • include snippets/fastcgi-php.conf;
      • fastcgi_pass unix:/var/run/php/php**{version}**-fpm.sock;
      • fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
      • include fastcgi_params;
    • }
  • Apache 两种常见方式:
    • 模块方式(mod_php):a2enmod php**{version}**;确保 <FilesMatch .php$> 使用正确的处理器
    • FPM 方式(推荐):启用 proxy_fcgi 模块,SetHandler “proxy:unix:/var/run/php/php**{version}**-fpm.sock|fcgi://localhost”

四 安全加固与运维实践

  • 降低信息泄露与攻击面:
    • expose_php = Off
    • display_errors = Off;error_reporting = E_ALL;日志写入文件
    • 禁用危险函数:disable_functions = exec,system,passthru,shell_exec,proc_open,popen
  • 会话与 Cookie 安全:
    • session.cookie_secure = On(仅 HTTPS)
    • session.cookie_httponly = On
    • 启用 HTTPS(部署有效证书)
  • 文件系统与资源限制:
    • open_basedir 限制 Web 可访问目录(如:/var/www/html:/tmp)
    • 合理设置 max_execution_time、memory_limit、upload_max_filesize
  • 日常运维:
    • 定期更新系统与扩展:sudo apt update && sudo apt upgrade
    • 监控与排错:使用 htop、php-fpm status 页面、慢日志(slowlog)定位瓶颈
    • 变更前备份配置,变更后逐步灰度并回滚预案

五 快速排错与验证

  • 验证安装与配置生效:
    • 创建 /var/www/html/info.php:
    • 访问 http://服务器IP/info.php 检查 Loaded Configuration Filememory_limitOPcache
    • 完成后删除 info.php,避免信息泄露
  • 修改后未生效的常见原因与处理:
    • 改错 php.ini(区分 CLIFPM/Apache
    • 未重启对应服务(Apache 或 PHP-FPM)
    • FPM 监听地址或权限错误(检查 socket 路径与 www-data 权限)
    • SELinux/AppArmor 限制(如启用需相应策略放行)

0