Ubuntu系统更新LNMP(Linux+Nginx+MySQL/MariaDB+PHP)组件版本的详细步骤
备份所有关键数据
mysqldump导出所有数据库,避免升级过程中数据丢失。mysqldump -u root -p --all-databases > /path/to/full_backup.sql
sudo cp -r /etc/nginx /etc/nginx_backup
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
php.ini及扩展配置。sudo cp /etc/php/*/php.ini /etc/php/backup/
检查当前组件版本
确认现有LNMP版本,为后续验证升级结果做准备:
nginx -v # 查看Nginx版本
mysql --version # 或 `mariadb --version`(若使用MariaDB)
php -v # 查看PHP版本
更新系统软件包列表
确保系统获取最新的软件包信息,避免依赖冲突:
sudo apt update && sudo apt upgrade -y
方法一:通过APT官方源升级(推荐)
Ubuntu的默认APT源通常包含较新的Nginx稳定版,直接升级即可:
sudo apt install nginx
升级完成后,平滑重启Nginx以应用更改(避免服务中断):
sudo systemctl restart nginx
方法二:添加Nginx官方源(获取最新稳定版)
若默认源版本过旧,可添加Nginx官方APT源:
# 导入Nginx官方GPG密钥
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo gpg --dearmor -o /etc/apt/keyrings/nginx.gpg
# 添加Nginx官方源(替换codename为Ubuntu版本,如22.04对应jammy)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/nginx.gpg] \
https://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" | sudo tee /etc/apt/sources.list.d/nginx.list > /dev/null
# 更新源并升级Nginx
sudo apt update && sudo apt install nginx
验证升级结果
nginx -v # 应显示最新版本
sudo systemctl status nginx # 确保服务运行正常
方法一:通过APT官方源升级(推荐)
Ubuntu的APT源会同步MySQL官方版本,直接升级即可:
sudo apt install mysql-server
升级完成后,重启MySQL服务:
sudo systemctl restart mysql
方法二:添加MySQL官方APT源(获取最新版本)
若需要特定版本的MySQL(如8.0+),可添加MySQL官方APT源:
# 下载并安装MySQL APT配置包
wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb
# 在弹出的对话框中选择MySQL版本(如8.0),点击OK
# 更新源并升级MySQL
sudo apt update && sudo apt install mysql-server
验证升级结果
mysql --version # 应显示最新版本
sudo systemctl status mysql # 确保服务运行正常
方法一:通过APT及PPA升级(推荐)
Ubuntu默认源的PHP版本可能滞后,可添加ondrej/php PPA(包含最新稳定版PHP):
# 添加ondrej/php PPA
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
# 安装最新PHP版本(如8.2,可根据需求替换)
sudo apt install php8.2 php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring
# 切换PHP版本(若系统有多个PHP版本)
sudo update-alternatives --config php
方法二:手动编译安装(适用于特定版本)
若需要非APT源提供的PHP版本,可手动编译:
# 安装编译依赖
sudo apt install build-essential libxml2-dev libssl-dev libcurl4-openssl-dev libjpeg-dev libpng-dev libonig-dev libzip-dev -y
# 下载PHP源码(以8.2.0为例)
wget https://www.php.net/distributions/php-8.2.0.tar.gz
tar -xzvf php-8.2.0.tar.gz
cd php-8.2.0
# 配置编译选项(根据需求调整)
./configure --prefix=/usr/local/php8.2 --with-config-file-path=/etc/php/8.2/cli --enable-mbstring --enable-zip --with-curl --with-openssl --with-jpeg --with-png
# 编译并安装
make -j$(nproc)
sudo make install
# 复制配置文件
sudo cp php.ini-production /etc/php/8.2/cli/php.ini
# 更新PHP-FPM配置(若使用PHP-FPM)
sudo systemctl restart php8.2-fpm
验证升级结果
php -v # 应显示最新版本
php -m # 检查所需扩展是否安装
sudo systemctl status php8.2-fpm # 确保PHP-FPM服务运行正常
注意:切换PHP-FPM版本
若使用PHP-FPM,需确保Nginx配置中的fastcgi_pass指向正确的PHP-FPM socket(如unix:/run/php/php8.2-fpm.sock),修改后重启Nginx:
sudo systemctl restart nginx
验证所有组件版本
确认LNMP组件均已升级至目标版本:
nginx -v && mysql --version && php -v
检查服务状态
确保所有服务正常运行:
sudo systemctl status nginx mysql php8.2-fpm # 根据实际PHP版本调整
清理旧版本文件
删除旧版本的配置文件和缓存,释放磁盘空间:
sudo apt autoremove -y
sudo apt autoclean
sudo apt --fix-broken install修复,或手动调整依赖关系。server块、PHP的php.ini),便于升级后恢复。