温馨提示×

如何配置Debian的PHP环境

小樊
44
2025-11-23 08:20:59
栏目: 编程语言

Debian PHP环境配置指南

一 准备与安装

  • 更新索引并安装基础组件:
    • sudo apt update
    • sudo apt install php php-cli php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip php-bcmath
  • 查看与安装指定版本(示例为PHP 8.2):
    • apt-cache policy php
    • sudo apt install php8.2 php8.2-cli php8.2-fpm php8.2-mysql
  • 验证安装:
    • php -v
    • 查看服务状态:sudo systemctl status php8.2-fpm(按实际版本替换)

二 选择并配置Web服务器

  • 使用 Nginx + PHP-FPM(推荐)
    • 配置 FPM 监听(/etc/php/8.2/fpm/pool.d/www.conf):
      • listen = /run/php/php8.2-fpm.sock
      • listen.owner = www-data;listen.group = www-data
    • 启动 FPM:
      • sudo systemctl start php8.2-fpm && sudo systemctl enable php8.2-fpm
    • 配置 Nginx(/etc/nginx/sites-available/default)示例:
      • server {
        • listen 80; server_name example.com;
        • root /var/www/html; index index.php index.html;
        • 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 reload nginx
  • 使用 Apache(mod_php 或 FPM)
    • mod_php(简单,适合快速部署):
      • sudo apt install libapache2-mod-php8.2
      • sudo a2enmod php8.2 && sudo systemctl restart apache2
    • FPM(与 Nginx 类似,适合高并发):
      • 启用模块:sudo a2enmod proxy_fcgi setenvif
      • 虚拟主机示例:
        • <FilesMatch .php$>
          • SetHandler “proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost”
      • sudo systemctl restart apache2

三 PHP 核心配置与性能优化

  • 配置文件路径(按运行模式区分):
    • CLI:/etc/php/8.2/cli/php.ini
    • FPM:/etc/php/8.2/fpm/php.ini
    • FPM 进程池:/etc/php/8.2/fpm/pool.d/www.conf
  • 常用参数建议(按业务调整):
    • memory_limit = 256M(生产可提升到512M
    • upload_max_filesize = 64M;post_max_size = 64M
    • max_execution_time = 300
    • display_errors = Off(生产);开发可 On
    • error_reporting = E_ALL
  • FPM 进程与权限(/etc/php/8.2/fpm/pool.d/www.conf):
    • user = www-data;group = www-data
    • listen.owner = www-data;listen.group = www-data
    • 动态/静态进程管理:pm = dynamic;pm.max_children = 50;pm.start_servers = 5;pm.min_spare_servers = 5;pm.max_spare_servers = 35
  • 应用配置与重载:
    • 修改 FPM 后:sudo systemctl reload php8.2-fpm
    • 修改 Apache 后:sudo systemctl reload apache2
    • 修改 Nginx 后:sudo nginx -t && sudo systemctl reload nginx

四 多版本共存与切换

  • 安装多个版本(示例:7.48.2):
    • sudo apt install php7.4 php7.4-fpm php8.2 php8.2-fpm
  • 分别配置各自的 FPM 监听(如:/run/php/php7.4-fpm.sock 与 /run/php/php8.2-fpm.sock),并在 Nginx/Apache 的 server 块中指定对应版本。
  • 切换 CLI 默认版本(Debian 多版本通常用 alternatives):
    • 查看:update-alternatives --config php
    • 交互选择所需版本(如 php8.2
  • 注意:不同站点可在同一服务器上运行不同 PHP 版本,分别指向对应的 FPM socket 或端口。

五 测试与运维安全

  • 功能测试:
    • 创建探针:echo “” | sudo tee /var/www/html/info.php
    • 访问:http://服务器IP/info.php(确认版本、扩展、SAPI 与 FPM socket)
    • 数据库连通性测试(示例):
      • connect_error) die("连接失败: " . $conn->connect_error); - echo "连接成功"; - ?>
  • 防火墙放行(UFW):
    • Nginx:sudo ufw allow ‘Nginx Full’
    • Apache:sudo ufw allow ‘Apache Full’
  • 安全建议:
    • 生产环境关闭 info.php,或限制访问来源
    • 启用 HTTPS(如 Let’s Encrypt)
    • 保持系统与扩展更新:sudo apt update && sudo apt upgrade
    • 设置合适的文件权限与所有者(如 /var/www/html 归属 www-data

0