一、升级前的准备工作
备份关键数据与配置文件
升级前务必备份所有重要数据和配置文件,防止操作失误导致数据丢失。常用备份命令:
sudo cp -a /etc/nginx /etc/nginx.bak # 备份Nginx配置
sudo cp -a /etc/my.cnf /etc/my.cnf.bak # 备份MySQL/MariaDB配置
sudo cp -a /etc/php.ini /etc/php.ini.bak # 备份PHP配置
sudo mysqldump -u root -p --all-databases > full-backup.sql # 备份所有数据库(可选但建议)
sudo cp -a /var/www /var/www.bak # 备份网站数据目录
更新系统包
确保系统所有包为最新版本,避免依赖冲突:
sudo yum update -y
二、分组件升级步骤
通过Yum安装的情况(推荐):
若Nginx通过yum安装(如使用官方或EPEL仓库),直接更新即可:
sudo yum install nginx # 自动升级到最新可用版本
sudo systemctl restart nginx # 重启服务生效
验证版本:nginx -V(显示编译参数及版本号)。
源码编译安装的情况:
若通过源码编译安装,需下载最新源码并重新编译:
cd /usr/src
sudo wget http://nginx.org/download/nginx-<latest_version>.tar.gz # 替换为最新版本号
sudo tar zxvf nginx-<latest_version>.tar.gz
cd nginx-<latest_version>
sudo ./configure --prefix=/usr/share/nginx --with-http_ssl_module --with-http_v2_module # 参考原编译参数
sudo make
sudo make install
sudo systemctl restart nginx
MySQL升级:
若使用MySQL,需先添加官方Yum仓库(以MySQL 8.0为例):
sudo yum remove mysql mysql-server # 移除旧版本(若有)
sudo wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm # CentOS 7示例
sudo rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
sudo yum install mysql-community-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
升级后需运行安全脚本重置root密码:sudo mysql_secure_installation。
MariaDB升级:
若使用MariaDB,操作类似:
sudo yum remove mariadb-server mariadb
sudo yum install mariadb-server
sudo systemctl start mariadb
sudo systemctl enable mariadb
验证版本:mysql -u root -p -e "SELECT VERSION();"(MySQL)或mariadb -u root -p -e "SELECT VERSION();"(MariaDB)。
通过Yum安装的情况(推荐):
若PHP通过yum安装,需启用对应的Remi仓库(以PHP 7.4为例):
sudo yum install epel-release
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm # CentOS 7示例
sudo yum-config-manager --enable remi-php74 # 切换到所需PHP版本
sudo yum update php php-mysqlnd php-fpm php-opcache # 更新PHP及常用扩展
sudo systemctl restart php-fpm # 重启PHP-FPM(若使用)
源码编译安装的情况:
若通过源码编译安装,需下载最新源码并重新编译:
cd /usr/src
sudo wget https://www.php.net/distributions/php-<latest_version>.tar.gz # 替换为最新版本号
sudo tar zxvf php-<latest_version>.tar.gz
cd php-<latest_version>
sudo ./configure --prefix=/usr/local/php --with-config-file-path=/etc --enable-fpm --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd # 参考原编译参数
sudo make
sudo make install
sudo cp php.ini-production /etc/php.ini # 更新配置文件
sudo systemctl restart php-fpm
验证版本:php -v。
三、升级后验证与清理
验证服务状态:
确保所有服务正常运行:
sudo systemctl status nginx
sudo systemctl status mysqld
sudo systemctl status php-fpm
验证功能正常:
/var/www/html/info.php),内容为<?php phpinfo(); ?>,通过浏览器访问确认PHP版本;清理临时文件:
删除下载的压缩包和源码目录,释放空间:
cd /
sudo rm -rf /usr/src/nginx-*.tar.gz
sudo rm -rf /usr/src/php-*.tar.gz
注意事项
./upgrade1.x-x.x.sh),可自动处理依赖和配置兼容问题;sudo yum deplist <package>查看依赖关系,手动解决或使用--skip-broken选项跳过有问题的包(不推荐长期使用)。