CentOS 迁移到 AlmaLinux

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服务器,迁移应用,而不是就地升级:

  1. 创建新的AlmaLinux 8/9云服务器
  2. 在新服务器上安装相同版本的应用软件
  3. 迁移配置文件和数据(参考云服务器迁移方案)
  4. 通过测试后切换DNS,将流量导向新服务器
  5. 保留旧服务器作为回滚备用,确认无问题后释放

五、升级后验证

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工具就地升级验证;对于生产环境,强烈建议新建服务器迁移,这样更安全可控,回滚也更容易。迁移前务必做好备份,宁可多花几小时准备,也不要冒数据丢失的风险。