CentOS 迁移到 AlmaLinux 完整指南
CentOS 8于2021年12月31日停止维护,CentOS 7将于2024年6月30日到达EOL。面对这一变化,AlmaLinux作为100% RHEL兼容的免费替代品,成为迁移的首选。本文介绍从CentOS迁移到AlmaLinux的完整方案。
一、为什么选择AlmaLinux
- 100% RHEL兼容:二进制兼容,无需修改应用程序
- 免费开源:由CloudLinux基金会支持,长期免费
- 稳定的长期支持:AlmaLinux 8和9均有10年支持期
- 官方迁移工具:提供elevate工具支持就地升级
- 活跃的社区:替代方案中社区最活跃,安全补丁及时
二、迁移前准备
# 1. 完整备份(最重要!) # 创建云硬盘快照 # 或使用rsync备份重要数据到另一台服务器 # 2. 记录当前系统信息 cat /etc/centos-release # 当前版本 rpm -qa > /tmp/packages_before.txt # 已安装软件包列表 ip a > /tmp/network_before.txt # 网络配置 crontab -l > /tmp/crontab_before.txt # 定时任务 # 3. 停止非必要服务 systemctl stop myapp # 迁移期间停止业务服务
三、使用官方ELevate工具就地升级
# 安装leapp升级工具 curl https://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm -o elevate-release.rpm rpm -ivh elevate-release.rpm yum install -y leapp-upgrade leapp-data-almalinux # 预升级检查(不实际升级) leapp preupgrade # 查看检查报告 cat /var/log/leapp/leapp-report.txt # 根据报告修复阻断问题,常见问题处理: # 1. 移除不兼容软件包 # 2. 更新PAM配置 # 3. 处理自定义内核模块 # 执行升级 leapp upgrade # 重启系统(重启后自动继续升级过程,约15-30分钟) reboot
四、全新安装迁移方案(推荐用于生产)
对于生产环境,更推荐准备一台新AlmaLinux服务器,迁移应用,而不是就地升级:
- 创建新的AlmaLinux 8/9云服务器
- 在新服务器上安装相同版本的应用软件
- 迁移配置文件和数据(参考云服务器迁移方案)
- 通过测试后切换DNS,将流量导向新服务器
- 保留旧服务器作为回滚备用,确认无问题后释放
五、升级后验证
cat /etc/almalinux-release # 验证系统版本 rpm -qa > /tmp/packages_after.txt diff /tmp/packages_before.txt /tmp/packages_after.txt # 对比软件包变化 # 检查关键服务状态 systemctl status nginx mysql redis netstat -tlnp | grep -E "80|443|3306" # 检查日志中的错误 journalctl -p err --since "1 hour ago"
六、常见迁移问题
- SELinux策略不兼容:升级后SELinux可能阻止某些服务,临时用permissive模式定位问题
- 软件仓库配置丢失:第三方软件源(如EPEL、Remi)需要重新配置AlmaLinux版本
- Python版本变化:AlmaLinux 8默认Python3,依赖Python2的脚本需要修复
- 服务配置文件差异:某些服务的配置文件路径或格式有细微差异,需要逐一验证
七、Rocky Linux vs AlmaLinux 选择
两者都是100% RHEL兼容的免费替代品,技术上几乎没有区别。AlmaLinux由商业公司CloudLinux支持,Rocky Linux由社区主导。可以根据团队偏好选择,两者都是可靠的长期选项。
八、总结
从CentOS迁移到AlmaLinux是当前最实际的升级路径。对于测试环境,可以使用ELevate工具就地升级验证;对于生产环境,强烈建议新建服务器迁移,这样更安全可控,回滚也更容易。迁移前务必做好备份,宁可多花几小时准备,也不要冒数据丢失的风险。