php多版本编译安装

实验工具条件:

  • 已安装 Apache(Ubuntu 默认 MPM 为 Event;Rocky 默认 MPM 为 Prefork 或 Event,根据安装)。
  • 以 root 用户身份执行命令。
  • 系统:Ubuntu 24.04(使用 apt)或 Rocky Linux 9(使用 dnf)。
  • 注意:mod_php 要求 Apache 使用 Prefork MPM 模型,但 Rocky Linux 9 不支持 mod_php;FPM 无此限制,且是 Rocky 的默认/唯一推荐方式。
  • 潜在问题:如果 Apache 无法启动,检查 MPM 模型兼容性(使用系统特定的模块检查命令)。PHP 版本可能为 8.3 或类似,根据系统仓库更新。在 Rocky 上,安装 php 仅提供 CLI 和扩展,不加载 mod_php。

1.2 PHP 环境配置

1.2.1 模块形式 - 安装 PHP 软件

模块形式将 PHP 嵌入 Apache 进程,适合简单环境,但资源消耗较高。注意:此方式仅适用于 Ubuntu 24.04;Rocky Linux 9 不支持 mod_php(无对应包和模块)。

Ubuntu 24.04
  1. 检查初始状态:

    复制代码
    apache2ctl -M | grep mpm  # 预期输出:mpm_event_module (shared) 或类似
    apache2ctl -M | grep php  # 预期无输出(未安装 PHP)
  2. 安装 PHP:

    复制代码
    apt update -y && apt install php -y
  3. 验证安装:

    复制代码
    ls /etc/php/8.3  # 预期输出:apache2 cli mods-available
    apache2ctl -M | grep mpm  # 预期输出:mpm_prefork_module (shared)
    ls /etc/apache2/mods-enabled/mpm*  # 预期输出:mpm_prefork.conf mpm_prefork.load
    apache2ctl -M | grep php  # 预期输出:php_module (shared)
    ls /etc/apache2/mods-enabled/php*  # 预期输出:php8.3.conf php8.3.load

    排查提示: 如果 MPM 未切换为 Prefork,手动编辑 /etc/apache2/mods-available/mpm_prefork.load 并启用(使用 a2enmod mpm_prefork && a2dismod mpm_event)。

Rocky Linux 9

不支持 mod_php。 请直接使用 FPM 方式(见 1.7.2.3)。如果安装 php:

复制代码
dnf update -y && dnf install php -y
  • 验证:httpd -M | grep php 将无输出;ls /etc/httpd/conf.modules.d/*php* 将显示无文件。继续到 FPM 安装。

1.2.2 模块形式 - Apache 应用 PHP

配置 Apache 处理 PHP 文件。注意:此方式仅适用于 Ubuntu 24.04;Rocky Linux 9 不支持 mod_php。

Ubuntu 24.04
  1. 定制默认虚拟主机:

    复制代码
    rm -f /etc/apache2/sites-enabled/vhost.conf
    ln -sf /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/
  2. 创建测试 PHP 文件:

    复制代码
    echo '<?php phpinfo(); ?>' > /var/www/html/index.php
  3. 重启 Apache 并验证:

    复制代码
    systemctl restart apache2.service
    • 浏览器访问 http://<服务器IP>/index.php(例如 http://10.0.0.13/index.php),预期显示 PHP 信息页面。
      排查提示: 如果页面空白,检查日志:journalctl -u apache2.service -xe/var/log/apache2/error.log
Rocky Linux 9

不支持 mod_php。 请直接使用 FPM 方式(见 1.7.2.4)。测试文件可创建,但需 FPM 配置后验证。

1.2.3 FPM 方式 - 部署 PHP 软件

FPM 提供独立进程管理,支持动态调整,适合高负载。这是 Rocky Linux 9 的推荐/唯一方式。

Ubuntu 24.04
  1. 安装 PHP-FPM:

    复制代码
    apt install php-fpm -y
  2. 确认配置:

    复制代码
    ls /etc/php/8.3  # 预期输出:apache2 cli fpm mods-available
    cat /etc/php/8.3/fpm/pool.d/www.conf  # 检查 listen = /run/php/php8.3-fpm.sock 或 127.0.0.1:9000
  3. 服务状态:

    复制代码
    systemctl is-active php8.3-fpm.service  # 预期输出:active
    ps aux | grep php-fpm  # 查看 master 和 pool 进程

    排查提示: 如果服务未启动:systemctl enable --now php8.3-fpm.service

Rocky Linux 9
  1. 安装 PHP-FPM:

    复制代码
    dnf install php-fpm -y
  2. 确认配置:

    复制代码
    ls /etc/php-fpm.d  # 预期输出:www.conf 等
    cat /etc/php-fpm.d/www.conf  # 检查 listen = /run/php-fpm/www.sock 或 127.0.0.1:9000
  3. 服务状态:

    复制代码
    systemctl is-active php-fpm.service  # 预期输出:active
    ps aux | grep php-fpm  # 查看 master 和 pool 进程

    排查提示: 如果服务未启动:systemctl enable --now php-fpm.service。检查 SELinux:setsebool -P httpd_can_network_connect 1 如果使用 TCP。

1.2.4 FPM 方式 - Apache 应用 PHP

使用 Proxy FCGI 代理请求到 FPM。

Ubuntu 24.04
  1. 准备 Apache 配置:

    复制代码
    cd /etc/apache2/mods-enabled/
    rm -rf php8.3.*
    ln -sfv ../mods-available/proxy_fcgi.load ./proxy_fcgi.load
    ln -sfv ../mods-available/proxy.conf ./proxy.conf
    ln -sfv ../mods-available/proxy.load ./proxy.load
  2. 配置代理:

    复制代码
    cat > /etc/apache2/mods-enabled/proxy.conf <<-EOF
    <FilesMatch ".+\.ph(ar|p|tml)$">
        SetHandler "proxy:unix:/run/php/php8.3-fpm.sock|fcgi://localhost"
    </FilesMatch>
    EOF
  3. 重启并验证:

    复制代码
    systemctl restart apache2.service
    apache2ctl -M | grep proxy  # 预期输出:proxy_module (shared) proxy_fcgi_module (shared)
    • 浏览器访问测试页(创建如 1.7.2.2 中的 index.php)。
      排查提示: 检查 Socket 权限:chown www-data:www-data /run/php/php8.3-fpm.sock
Rocky Linux 9
  1. 准备 Apache 配置:

    复制代码
    cd /etc/httpd/conf.modules.d/
    rm -f 10-php.conf  # 或类似 mod_php 文件(如果存在,通常不存在)
    echo 'LoadModule proxy_module modules/mod_proxy.so' >> 00-proxy.conf
    echo 'LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so' >> 00-proxy.conf
  2. 配置代理:

    复制代码
    cat > /etc/httpd/conf.d/php-fpm.conf <<-EOF
    <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
    </FilesMatch>
    EOF
  3. 重启并验证:

    复制代码
    systemctl restart httpd.service
    httpd -M | grep proxy  # 预期输出:proxy_module (shared) proxy_fcgi_module (shared)
    • 浏览器访问测试页(创建 echo '<?php phpinfo(); ?>' > /var/www/html/index.php)。
      排查提示: 检查 Socket 权限:chown apache:apache /run/php-fpm/www.sock。SELinux:setsebool -P httpd_can_network_connect 1

1.2.5 PHP 加速配置实践

使用 OPcache 缓存字节码,提升 PHP 性能。

Ubuntu 24.04
  1. 简介: OPcache 减少代码解析开销。

  2. 检查与配置:

    复制代码
    ls /etc/php/8.3/fpm/conf.d/*opcache*  # 预期输出:10-opcache.ini
    cat /etc/php/8.3/fpm/conf.d/10-opcache.ini  # 检查 zend_extension=opcache.so
    • 编辑启用:echo 'opcache.enable=1' >> /etc/php/8.3/fpm/conf.d/10-opcache.ini
  3. 重启:

    复制代码
    systemctl restart php8.3-fpm.service

    排查提示: php -i | grep opcache 检查状态。

Rocky Linux 9
  1. 简介: OPcache 减少代码解析开销。

  2. 检查与配置:

    复制代码
    ls /etc/php.d/*opcache*  # 预期输出:10-opcache.ini
    cat /etc/php.d/10-opcache.ini  # 检查 zend_extension=opcache.so
    • 编辑启用:echo 'opcache.enable=1' >> /etc/php.d/10-opcache.ini
  3. 重启:

    复制代码
    systemctl restart php-fpm.service

    排查提示: php -i | grep opcache 检查状态。

1.3 博客案例

1.3.1 案例解读

Ubuntu 24.04
  1. WordPress 简介: 开源 CMS,用于博客/网站构建,依赖 PHP 和数据库。

  2. 部署流程(推荐 FPM):

    复制代码
    apt install mariadb-server -y
    systemctl enable --now mariadb.service
    cd /var/www/html
    wget https://wordpress.org/latest.tar.gz
    tar -xzf latest.tar.gz && mv wordpress/* . && rm -rf wordpress latest.tar.gz
    chown -R www-data:www-data .
    apt install php-mysql php-gd php-curl -y
    • 配置数据库:mysql -u root -p 创建数据库/用户。
    • 编辑 wp-config.php 设置 DB 连接。
    • 重启:systemctl restart apache2.service
    • 浏览器访问完成安装。
      排查提示: 检查权限和日志。
Rocky Linux 9
  1. WordPress 简介: 开源 CMS,用于博客/网站构建,依赖 PHP 和数据库。

  2. 部署流程(推荐 FPM):

    复制代码
    dnf install mariadb-server -y
    systemctl enable --now mariadb.service
    cd /var/www/html
    wget https://wordpress.org/latest.tar.gz
    tar -xzf latest.tar.gz && mv wordpress/* . && rm -rf wordpress latest.tar.gz
    chown -R apache:apache .
    dnf install php-mysqlnd php-gd php-curl -y
    • 配置数据库:mysql -u root -p 创建数据库/用户。
    • 编辑 wp-config.php 设置 DB 连接。
    • 重启:systemctl restart httpd.service
    • 浏览器访问完成安装。
      排查提示: 检查 SELinux:setsebool -P httpd_unified 1,和日志。
相关推荐
柯南二号4 小时前
【后端】【Java】《Spring Boot 统一接口耗时统计实践:基于 HandlerInterceptor 的工程级方案》
java·开发语言·数据库
黑客思维者4 小时前
Python modbus-tk在配电物联网边缘网关的应用
开发语言·python·物联网
Cigaretter74 小时前
Day 30 类的定义与方法
开发语言·python
郝学胜-神的一滴4 小时前
Separate Buffer、InterleavedBuffer 策略与 OpenGL VAO 深度解析
开发语言·c++·程序人生·算法·游戏程序·图形渲染
裤裤兔4 小时前
python2与python3的兼容
开发语言·python·numpy
一 乐4 小时前
心理健康管理|基于springboot + vue心理健康管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
前端小端长4 小时前
深入理解Composition API与Vue3.0响应式原理
开发语言·javascript
JaguarJack4 小时前
PHP 8.6 即将支持部分函数应用
后端·php