CentOS 8 在 2021 年底提前终止支持(EOL),CentOS 7 将于 2024 年 6 月 30 日 正式 EOL。因此,将基于 CentOS 的轻量服务器(如阿里云/腾讯云/华为云轻量应用服务器)迁移到 AlmaLinux 或 Rocky Linux 是必要且紧迫的安全升级举措。
⚠️ 重要前提:
官方不支持直接原地升级(in-place upgrade)从 CentOS 到 AlmaLinux/Rocky Linux(尤其是跨大版本,如 CentOS 7 → Rocky 8/9)。Red Hat 官方及下游发行版均明确建议:全新部署 + 数据迁移 是最安全、可靠、可审计的方式。原地转换工具(如 migrate2rocky / almalinux-deploy)仅适用于特定场景,存在风险,不推荐用于生产环境(尤其轻量服务器通常承载关键业务)。
以下是针对轻量服务器的推荐迁移路径(分步实操指南),兼顾安全性、可控性与最小停机:
✅ 推荐方案:全新部署 + 应用/数据迁移(强烈推荐)
▶️ 第一阶段:准备与评估
-
确认当前系统信息
cat /etc/redhat-release # 如 CentOS Linux release 7.9.2009 uname -r # 内核版本 rpm -qa | grep kernel # 已安装内核 df -h # 磁盘使用情况 systemctl list-unit-files --state=enabled | grep -E "(nginx|httpd|mysql|mysqld|postgresql|redis|docker)" # 关键服务 -
选择目标发行版版本(严格对齐) CentOS 版本 推荐目标发行版 原因 CentOS 7.x Rocky Linux 7.9 或 AlmaLinux 7.9 ABI 兼容,内核/软件包生态一致,无缝迁移 CentOS 8.x Rocky Linux 8.10 或 AlmaLinux 8.10 CentOS 8 EOL 后,8.10 是最终维护版本(2024年5月发布) ✅ 避免升到 Rocky 9/Alma 9(需应用兼容性验证,非简单替换)
-
检查云平台镜像支持
- 阿里云轻量:控制台 → 创建实例 → 镜像 → 搜索 “Rocky” 或 “AlmaLinux”(已官方上架)
- 腾讯云轻量:镜像市场 → 搜索 “Rocky Linux 7.9”(或 8.10)✅
- 华为云:镜像中心 → 公共镜像 → 选择对应版本
🔍 若无现成镜像,可手动创建(见下文“备选方案”)
▶️ 第二阶段:新建目标服务器并迁移
| 步骤 | 操作 | 说明 |
|---|---|---|
| 1. 创建新轻量服务器 | 使用云平台控制台,选择目标镜像(如 Rocky Linux 7.9 x64),配置相同规格(CPU/内存/磁盘)、同地域、同VPC(便于内网互通) |
建议先选按量付费测试,验证成功后再转包年包月 |
| 2. 迁移用户与权限 | bash # 在新服务器执行<br>useradd -m -s /bin/bash <username><br>passwd <username><br>usermod -aG wheel <username> # 赋予sudo权限<br> | 复制 /etc/sudoers.d/ 下自定义规则(如有) |
|
| 3. 迁移应用配置与数据 | • Web:/var/www, /etc/httpd 或 /etc/nginx• 数据库: – MySQL/MariaDB: mysqldump 导出 + mysql 导入(务必先停服务再导出)– PostgreSQL: pg_dumpall / psql• 其他: /etc/sysconfig/, /etc/systemd/system/*.service, SSL证书(/etc/letsencrypt)等 |
⚠️ 禁止直接复制数据库文件目录(如 /var/lib/mysql)! 可能因版本差异导致损坏 |
| 4. 迁移防火墙规则 | • CentOS 7:firewalld → Rocky 7/Alma 7 默认启用,规则兼容• 执行: firewall-cmd --list-all(旧机)→ firewall-cmd --permanent --add-service=http 等(新机) |
或直接复制 /etc/firewalld/zones/public.xml(需校验) |
| 5. 迁移定时任务 | crontab -e(用户级)或 /etc/crontab、/etc/cron.d/ 下文件 |
注意路径是否变化(如 Python 脚本路径) |
| 6. 验证与切换 DNS | • 在新服务器启动服务:systemctl start nginx && systemctl enable nginx• 测试访问: curl -I http://localhost• 使用 rsync 增量同步(若需零停机):rsync -avz --delete /var/www/ user@new-server:/var/www/• 最后切换域名解析(DNS TTL 提前调低至 300s) |
✅ 建议先通过临时 IP 或 Hosts 测试全部功能正常 |
▶️ 第三阶段:清理与优化
- 卸载旧服务器:确认新服务稳定运行 ≥ 48 小时后,释放旧 CentOS 实例。
- 更新新系统:
dnf clean all && dnf update -y # Rocky/Alma 8+ yum update -y # Rocky/Alma 7(仍用 yum) - 加固配置:
- 禁用 root SSH 登录:
sed -i 's/^PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config - 启用 Fail2ban:
dnf install fail2ban && systemctl enable --now fail2ban
- 禁用 root SSH 登录:
- 监控验证:检查日志
journalctl -u nginx -n 50,确认无报错。
⚠️ 备选方案(仅限技术验证,不推荐生产)
若必须原地转换(如无法停机、无备份条件),可尝试社区工具,但需严格备份+快照:
- Rocky Linux:
curl -O https://raw.githubusercontent.com/rocky-linux/rocky-tools/main/migrate2rocky/migrate2rocky.sh chmod +x migrate2rocky.sh sudo ./migrate2rocky.sh -r # -r 表示 Rocky(-a 为 Alma) - AlmaLinux:
curl -O https://raw.githubusercontent.com/AlmaLinux/almalinux-deploy/master/almalinux-deploy.sh sudo bash almalinux-deploy.sh❗ 风险提示:
- 可能失败导致系统无法启动(需依赖云平台快照回滚)
- SELinux 策略、内核模块、第三方仓库(如 EPEL、Remi)需手动重装适配
- 轻量服务器通常无 RAID/多盘,快照是唯一救命稻草!操作前必打快照!
📌 关键注意事项
- PHP/Python 应用兼容性:Rocky/Alma 7 默认 PHP 5.4 → 但实际常用
php74(SCL)或php80(EPEL),需dnf module list php查看并启用。 - Docker 支持:直接安装
dnf install dnf-plugins-core→dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo→dnf install docker-ce(兼容)。 - 时间同步:确保
chronyd服务启用:systemctl enable --now chronyd。 - 许可证合规:Rocky & Alma 均为 100% RHEL 兼容、开源免费,无商业授权风险。
✅ 总结:最佳实践路线图
graph LR
A[评估 CentOS 版本] --> B{CentOS 7?}
B -->|是| C[选 Rocky 7.9 / Alma 7.9]
B -->|否| D[选 Rocky 8.10 / Alma 8.10]
C & D --> E[云平台创建新实例]
E --> F[迁移用户/配置/数据]
F --> G[测试验证]
G --> H[切流/DNS切换]
H --> I[下线旧服务器]
💡 终极建议:轻量服务器资源有限,迁移是绝佳机会——
✅ 升级到较新内核(如 Rocky 8.10 自带 4.18+)
✅ 启用更现代工具链(Podman 替代 Docker、Cockpit 图形化管理)
✅ 启用自动安全更新:dnf install yum-cron && systemctl enable --now yum-cron
如需具体某一步的命令详解(如 MySQL 迁移脚本、Nginx 配置转换、Let’s Encrypt 证书迁移),欢迎告知您的环境细节(CentOS 版本、运行的服务、云厂商),我可为您定制完整操作清单。
云服务器