温馨提示×

Debian Apache如何支持PHP应用

小樊
38
2025-12-09 23:43:38
栏目: 编程语言

在 Debian 上让 Apache 支持 PHP 的两种常用方式

  • 方式一:使用 mod_php(嵌入 Apache 模块,配置简单,适合大多数传统应用)
  • 方式二:使用 PHP-FPM(FastCGI 进程管理,性能与并发更好,适合生产环境)

方式一 使用 mod_php 集成

  • 更新索引并安装组件(Debian 12 默认提供 PHP 8.2;如使用其他版本,将命令中的版本号替换为你的实际版本,如 7.4/8.1/8.3
    sudo apt update
    sudo apt install apache2 php libapache2-mod-php
    sudo systemctl start apache2
    sudo systemctl enable apache2
    
  • 启用 PHP 模块(按你的 PHP 版本执行,例如 php8.2
    sudo a2enmod php8.2
    sudo systemctl restart apache2
    
  • 创建测试文件验证
    echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
    
    浏览器访问:http://服务器IP/info.php,看到 PHP 信息页即表示成功。完成后建议删除测试文件:sudo rm /var/www/html/info.php
  • 常用扩展按需安装(示例)
    sudo apt install php-mysql php-gd php-curl php-xml php-mbstring php-zip php-opcache
    sudo systemctl restart apache2
    

以上步骤适用于 Debian 12 及基于 Debian 的系统,默认仓库的 PHP 版本通常为 8.2


方式二 使用 PHP-FPM 与 Apache 集成(推荐用于生产)

  • 安装组件
    sudo apt update
    sudo apt install apache2 php-fpm php-cli
    sudo systemctl start apache2 php-fpm
    sudo systemctl enable apache2 php-fpm
    
  • 启用 Apache 代理与文件类型处理模块
    sudo a2enmod proxy_fcgi setenvif
    sudo a2enconf php8.2-fpm   # 按实际版本调整
    sudo systemctl restart apache2
    
  • 创建测试文件验证
    echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php
    
    浏览器访问:http://服务器IP/info.php,应显示 PHP 信息页。完成后删除测试文件:sudo rm /var/www/html/info.php
  • 说明
    • PHP-FPM 默认监听 /run/php/php8.2-fpm.sock(Debian 12),由包安装脚本自动创建系统服务与 socket,Apache 通过 proxy_fcgi 转发 .php 请求到该 socket,性能与并发优于 mod_php。

部署与权限设置要点

  • 放置应用代码(示例将应用放在 /var/www/html/myapp
    sudo mkdir -p /var/www/html/myapp
    # 将你的代码放入该目录
    
  • 设置目录权限(Web 服务用户通常为 www-data
    sudo chown -R www-data:www-data /var/www/html/myapp
    sudo find /var/www/html/myapp -type f -exec chmod 644 {} \;
    sudo find /var/www/html/myapp -type d -exec chmod 755 {} \;
    
  • 配置虚拟主机(示例)
    sudo nano /etc/apache2/sites-available/myapp.conf
    
    内容示例:
    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/myapp
    
        <Directory /var/www/html/myapp>
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    
    启用站点并重启:
    sudo a2ensite myapp.conf
    sudo systemctl reload apache2
    
  • 如需数据库(示例安装 MySQL
    sudo apt install mysql-server
    # 后续按应用要求创建数据库与用户并授权
    

以上为通用部署与权限配置步骤,适用于在 Apache 上托管 PHP 应用。


常用配置与优化

  • 调整 PHP 运行时参数(编辑对应版本的 php.ini)
    • 路径示例:
      • mod_php:/etc/php/8.2/apache2/php.ini
      • PHP-FPM:/etc/php/8.2/fpm/php.ini
    • 常见参数(按需求调整):
      memory_limit = 256M
      upload_max_filesize = 100M
      post_max_size = 100M
      display_errors = Off        # 生产环境建议关闭
      error_reporting = E_ALL
      opcache.enable=1
      opcache.memory_consumption=128
      opcache.interned_strings_buffer=8
      opcache.max_accelerated_files=4000
      opcache.revalidate_freq=60
      
    • 修改后重启服务:
      sudo systemctl restart apache2      # mod_php
      sudo systemctl restart php8.2-fpm   # PHP-FPM
      
  • 防火墙放行(如使用 ufw
    sudo ufw allow 'Apache Full'
    

以上配置与优化项可显著提升稳定性与安全性,生产环境请关闭错误显示并开启 OPcache

0