Ubuntu 20.04 LTS服务端升级实战指南

Ubuntu 20.04 LTS服务端升级实战指南
1. 服务端Ubuntu 20.04 LTS升级全景指南作为长期维护生产环境的运维工程师我经历过无数次Ubuntu LTS版本升级。每次升级都像给飞行中的飞机更换引擎——必须确保万无一失。本文将详细记录从Ubuntu 18.04 LTS升级到20.04 LTS的全过程重点分享服务端环境下的特殊处理经验。Ubuntu 20.04 LTSFocal Fossa作为长期支持版本提供了5年的标准维护周期。对于服务端环境而言这次升级带来了诸多关键改进默认搭载的Linux 5.4内核优化了IO性能APT包管理器支持增量更新新增的Cloud-init 20.1版本简化了云环境配置。但同时也需要注意Python 2已被彻底移除部分旧版软件需要提前适配。2. 升级前的深度准备2.1 环境检查与兼容性验证在控制台执行以下命令获取当前系统信息lsb_release -a uname -a df -h特别需要检查根分区剩余空间建议至少保留10GB当前内核版本与驱动兼容性正在运行的Python 2服务可通过ps aux | grep python排查关键提示生产环境务必在非业务高峰时段操作建议先在测试环境验证所有服务兼容性。我曾遇到过一个案例某金融系统因未测试Python 2到3的迁移导致升级后支付接口全部失效。2.2 备份策略实施采用分层备份方案系统级备份使用tar -cvpzf /backup/system_backup.tar.gz --exclude/proc --exclude/lostfound --exclude/backup --exclude/mnt --exclude/sys /数据备份针对MySQL/MongoDB等数据库执行完整dump配置备份etckeeper commit -m Pre-upgrade backup保存/etc目录变更历史验证备份完整性的快速方法# 随机抽查关键配置文件 tar -tvf /backup/system_backup.tar.gz | grep etc/nginx/nginx.conf # 检查数据库备份可读性 head -n 20 /backup/mysql_dump.sql3. 分阶段升级实操3.1 基础环境更新首先确保现有系统处于最新状态sudo apt update sudo apt dist-upgrade -o APT::Get::Always-Include-Phased-Updatestrue sudo apt autoremove遇到常见的Phased Updates问题时可以通过以下命令强制包含所有更新sudo apt -o APT::Get::Always-Include-Phased-Updatestrue upgrade3.2 正式升级执行启动升级进程sudo do-release-upgrade -d注意-d参数仅在20.04.1发布前需要正式版发布后可省略。升级过程中会多次询问配置文件的处理方式对于关键服务如SSH、Nginx建议选择D先查看差异。典型配置文件冲突处理流程对比新旧配置差异diff /etc/nginx/nginx.conf /etc/nginx/nginx.conf.dpkg-old合并关键参数如worker_processes、keepalive_timeout等保留自定义配置如server块定义3.3 升级后必做检查项服务状态验证systemctl list-units --failed journalctl -p 3 -xb关键组件版本确认# 检查OpenSSL版本需≥1.1.1 openssl version # 验证Python环境 python3 --version pip3 list网络连通性测试# 检查监听端口 ss -tulnp # 模拟外部访问 curl -I http://localhost4. 疑难问题解决方案4.1 常见报错处理案例1MySQL服务启动失败症状升级后MySQL无法启动日志显示Unknown storage engine InnoDB 解决方案sudo mv /var/lib/mysql /var/lib/mysql.bak sudo mysql_install_db --usermysql --ldata/var/lib/mysql sudo systemctl start mysql案例2Nginx配置语法错误症状nginx -t报错invalid parameter 处理步骤备份现有配置cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak使用nginx -T输出完整配置逐步注释新版本不兼容的指令如listen 80 default_server需改为listen 804.2 性能调优建议升级后建议调整以下参数内核参数优化/etc/sysctl.confnet.core.somaxconn 4096 vm.swappiness 10文件描述符限制/etc/security/limits.conf* soft nofile 65535 * hard nofile 65535针对PHP-FPM的特别调整/etc/php/7.4/fpm/php.iniopcache.enable1 opcache.memory_consumption1285. 升级后的持续维护建立版本监控看板# 每日检查可更新包 apt list --upgradable # 监控安全公告 ubuntu-security-status配置自动化更新策略/etc/apt/apt.conf.d/50unattended-upgradesUnattended-Upgrade::Allowed-Origins { ${distro_id}:${distro_codename}; ${distro_id}:${distro_codename}-security; ${distro_id}ESM:${distro_codename}; };对于关键业务服务器建议建立灰度更新机制先更新1-2台非核心节点观察24小时无异常后再批量更新。同时保留快速回滚方案如通过备份的rootfs快速重建实例。