centps 7升级php和nginx到最新版
在 CentOS 7 上将 PHP 和 Nginx 升级到最新版本,由于 CentOS 7 官方源(Base)中的版本非常老旧(PHP 5.4 和 Nginx 1.12 左右),我们必须引入 Remi 源(针对 PHP)和 Nginx 官方源。
需要特别注意的是,CentOS 7 官方已于 2024 年 6 月 30 日停止维护(EOL),官方的 Base 源可能已经失效。如果你的系统尚未更换 CentOS 7 的归档源(Vault 源),升级前请确保你的 yum 还能正常工作。
以下是完整的升级步骤:
一、 升级 Nginx 到最新稳定版 (Mainline 或 Stable)
CentOS 7 自带的 EPEL 源版本较旧,直接使用 Nginx 官方维护的 RHEL/CentOS 7 仓库可以获取最新版。
- 添加 Nginx 官方源
创建并编辑 Nginx 源配置文件:
Bash
vi /etc/yum.repos.d/nginx.repo
粘贴以下内容(这里推荐使用最新稳定版 stable,如果追求绝对最新功能,可以将下文中的 stable 改为 mainline):
Ini, TOML
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
- 停止旧服务并升级
为了防止升级期间配置文件冲突或服务异常,建议先备份配置:
Bash
备份旧配置(以防万一)
cp -r /etc/nginx /etc/nginx_bak
升级 Nginx
yum clean all
yum install -y nginx
启动并设置开机自启
systemctl daemon-reload
systemctl restart nginx
systemctl enable nginx
- 验证版本
Bash
nginx -v
(此时应该显示为最新的 1.26.x 或更高版本)
二、 升级 PHP 到最新版 (PHP 8.2 或 8.3)
在 2026 年,PHP 的主流稳定版为 8.2 / 8.3 / 8.4。由于 CentOS 7 自身编译环境限制,Remi 源是目前在 CentOS 7 上安全运行最新 PHP 的唯一可靠途径。
安装 EPEL 和 Remi 仓库
Bash安装 EPEL 源(如果已安装可跳过)
yum install -y epel-release
安装 Remi 源(专门针对 CentOS 7 的版本)
yum install -y https://rpms.remirepo.net/enterprise/remi-release-7.rpm
安装 yum 管理工具
yum install -y yum-utils
- 清理旧版 PHP(如果之前装过)
如果系统里有旧的 PHP 5.x,直接升级容易起冲突,建议先卸载旧包:
Bash
yum remove -y php php-common php-cli php-fpm
- 启用最新 PHP 分支并安装
使用 yum-config-manager 激活你想要的 PHP 版本。这里以 PHP 8.3 为例(如果想装 8.2 或 8.4,只需将下面命令中的 83 改为 82 或 84):
Bash
启用 PHP 8.3 仓库
yum-config-manager --enable remi-php83
安装 PHP 8.3 核心及常用扩展(与 Nginx 配合必须安装 php-fpm)
yum install -y php php-cli php-fpm php-common php-mysqlnd php-gd php-mbstring php-xml php-json php-curl php-zip
安装 PHP 的 MySQL 核心驱动与 PDO 扩展
yum install -y php-mysqlnd php-pdo
启动 PHP-FPM
Bash启动服务
systemctl start php-fpm
设置开机自启
systemctl enable php-fpm
- 验证版本
Bash
php -v
三、 避坑指南与 Nginx 配置衔接
升级完成后,由于新版 PHP 的执行用户、用户组或者 Socket 路径可能与旧版不同,请务必核对以下两点:
检查 PHP-FPM 运行用户:
打开 /etc/php-fpm.d/www.conf,确保 user 和 group 与你的 Nginx 运行用户一致(通常 Nginx 官方源的用户名为 nginx,我的名字都为apache):
Ini, TOML
user = nginx
group = nginx
修改后记得重启:systemctl restart php-fpm
检查 Nginx 连接 PHP 的方式:
看一眼 /etc/php-fpm.d/www.conf 里的 listen 选项:
如果是 listen = 127.0.0.1:9000,则 Nginx 配置文件中应写 fastcgi_pass 127.0.0.1:9000;
如果是 listen = /run/php-fpm/www.sock,则 Nginx 中应写 fastcgi_pass unix:/run/php-fpm/www.sock;