温馨提示×

Ubuntu PHP配置与Web服务器集成

小樊
38
2025-11-24 20:04:42
栏目: 云计算

Ubuntu 下将 PHP 与 Web 服务器集成

一 环境准备与版本选择

  • 更新系统并安装常用工具:sudo apt update && sudo apt upgrade -y
  • 选择并安装所需的 PHP 版本(示例:PHP 8.3PHP 7.4)。安装常用扩展:sudo apt install php php-cli php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip
  • 启动并开机自启 PHP-FPM(以实际版本为准):sudo systemctl start php8.3-fpm && sudo systemctl enable php8.3-fpm
  • 建议将站点根目录的所有者设为 www-data,以便与 PHP-FPM/Apache 工作进程权限一致:sudo chown -R www-data:www-data /var/www/html

二 与 Apache 集成

  • 安装 Apache:sudo apt install apache2
  • 方案 A(推荐)使用 PHP-FPM 处理 PHP
    • 启用模块:sudo a2enmod proxy_fcgi setenvif
    • 配置 PHP-FPM 监听(/etc/php/8.3/fpm/pool.d/www.conf):listen = /run/php/php8.3-fpm.sock
    • 在站点配置(如 /etc/apache2/sites-available/000-default.conf 的 内)添加:
      • <FilesMatch .php$> SetHandler “proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost”
    • 重启服务:sudo systemctl restart apache2 && sudo systemctl restart php8.3-fpm
  • 方案 B 使用内置模块(libapache2-mod-php)
    • 安装模块:sudo apt install libapache2-mod-php8.3
    • 启用重写:sudo a2enmod rewrite
    • 重启服务:sudo systemctl restart apache2
  • 说明:两种方案二选一;FPM 更利于并发与资源隔离,模块方式更简单

三 与 Nginx 集成

  • 安装 Nginx:sudo apt install nginx
  • 配置 PHP-FPM 监听(/etc/php/8.3/fpm/pool.d/www.conf):listen = /run/php/php8.3-fpm.sock
  • 编辑站点配置(/etc/nginx/sites-available/default 的 server 块):
    • 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
  • 可选:使用 TCP 方式(适合容器/跨主机)将 fastcgi_pass 改为 127.0.0.1:9000,并相应调整 PHP-FPM 的 listen

四 测试与常见问题

  • 测试集成
    • 创建测试文件:echo “” | sudo tee /var/www/html/info.php
    • 访问:http://服务器IP/info.php,出现 PHP 信息页即成功
    • 出于安全,测试完成后删除:sudo rm /var/www/html/info.php
  • 常见问题排查
    • 403/404:确认 root 目录与 index.php 存在,且 允许访问(AllowOverride/Require all granted)
    • 502 Bad Gateway:检查 PHP-FPM 是否在运行(systemctl status php8.3-fpm),核对 fastcgi_pass 的 socket 路径或端口 与 PHP-FPM 配置一致
    • 语法错误:Nginx 执行 sudo nginx -t;Apache 执行 sudo apache2ctl configtest
    • 权限问题:确保网站目录属主为 www-data,PHP-FPM 与 Web 服务运行用户一致
    • 扩展缺失:安装所需扩展后,重启对应服务(Apache 或 PHP-FPM)使其生效

五 性能与安全优化

  • 性能
    • 启用 OPcache(编辑 /etc/php/8.3/fpm/php.ini):opcache.enable=1,必要时调大 opcache.memory_consumption、opcache.interned_strings_buffer、opcache.max_accelerated_files
    • 静态资源由 Nginx 直接服务,PHP 仅处理动态请求;按需调整 FPM 的 pm.max_children、pm.start_servers 等
  • 安全
    • 隐藏 PHP 版本:在 php.ini 设置 expose_php = Off
    • 限制上传与执行:合理设置 upload_max_filesize、post_max_size、max_execution_time、memory_limit
    • 仅允许必要扩展,禁用危险函数(如 exec、shell_exec 等)视应用而定
    • 启用 HTTPS(部署 TLS/SSL 证书),对外仅开放 80/443,限制管理接口与目录访问(如 location ~ /.ht { deny all; })

0