温馨提示×

Ubuntu如何更新LNMP组件版本

小樊
66
2025-09-20 21:10:36
栏目: 智能运维

Ubuntu系统更新LNMP(Linux+Nginx+MySQL/MariaDB+PHP)组件版本的详细步骤

一、升级前的准备工作

  1. 备份所有关键数据

    • MySQL/MariaDB数据库:使用mysqldump导出所有数据库,避免升级过程中数据丢失。
      mysqldump -u root -p --all-databases > /path/to/full_backup.sql
      
    • Nginx配置文件:备份默认配置及自定义站点配置。
      sudo cp -r /etc/nginx /etc/nginx_backup
      sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
      
    • PHP配置文件:备份php.ini及扩展配置。
      sudo cp /etc/php/*/php.ini /etc/php/backup/
      
  2. 检查当前组件版本
    确认现有LNMP版本,为后续验证升级结果做准备:

    nginx -v  # 查看Nginx版本
    mysql --version  # 或 `mariadb --version`(若使用MariaDB)
    php -v  # 查看PHP版本
    
  3. 更新系统软件包列表
    确保系统获取最新的软件包信息,避免依赖冲突:

    sudo apt update && sudo apt upgrade -y
    

二、分组件升级步骤

1. 升级Nginx

  • 方法一:通过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  # 确保服务运行正常
    

2. 升级MySQL/MariaDB

  • 方法一:通过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  # 确保服务运行正常
    

3. 升级PHP

  • 方法一:通过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
    

三、升级后验证与清理

  1. 验证所有组件版本
    确认LNMP组件均已升级至目标版本:

    nginx -v && mysql --version && php -v
    
  2. 检查服务状态
    确保所有服务正常运行:

    sudo systemctl status nginx mysql php8.2-fpm  # 根据实际PHP版本调整
    
  3. 清理旧版本文件
    删除旧版本的配置文件和缓存,释放磁盘空间:

    sudo apt autoremove -y
    sudo apt autoclean
    

四、注意事项

  • 兼容性检查:升级前查阅各组件的官方升级文档,确保新版本与现有应用、扩展兼容(如WordPress、Laravel等)。
  • 测试环境优先:生产环境升级前,务必在测试环境中验证升级流程,避免业务中断。
  • 依赖问题处理:若升级过程中出现依赖冲突,可使用sudo apt --fix-broken install修复,或手动调整依赖关系。
  • 配置文件备份:升级前备份所有自定义配置文件(如Nginx的server块、PHP的php.ini),便于升级后恢复。

0