从 CentOS 迁移到 Ubuntu 服务器的步骤可分为以下几个阶段:
一、迁移前准备
1. 环境评估与规划
-
记录源服务器(CentOS)的配置信息:
# 系统信息 uname -a cat /etc/centos-release # 网络配置 ip addr cat /etc/hosts cat /etc/resolv.conf # 磁盘使用 df -h lsblk # 运行的服务 systemctl list-units --type=service --state=running ss -tulpn
2. 应用程序清单
- 列出所有安装的软件包:
rpm -qa或yum list installed - 记录自定义配置文件位置
- 记录数据目录结构
- 记录定时任务:
crontab -l和/etc/crontab
3. 备份策略
# 备份重要数据
tar -czf /backup/config_backup.tar.gz /etc/
tar -czf /backup/data_backup.tar.gz /var/www/ /home/ /opt/
# 数据库备份(如适用)
mysqldump -u root -p --all-databases > /backup/alldb.sql
pg_dumpall > /backup/alldb.sql
二、目标服务器准备
1. Ubuntu 服务器初始化
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装常用工具
sudo apt install -y vim curl wget net-tools htop ufw
# 设置时区
sudo timedatectl set-timezone Asia/Shanghai
2. 环境匹配
- 安装与 CentOS 对应的软件版本
- 配置相同的网络环境(IP、DNS等)
- 创建相同的用户和组
- 设置相同的目录权限
三、应用程序迁移
1. 软件包转换
-
方法一:手动安装对应软件
# CentOS (yum) 到 Ubuntu (apt) 常见包名对应: # httpd → apache2 # mariadb-server → mariadb-server # php → php # nginx → nginx (名称相同) sudo apt install apache2 mariadb-server php libapache2-mod-php -
方法二:使用 alien 转换 RPM(不推荐生产环境)
sudo apt install alien alien -i package.rpm
2. 配置文件迁移
# 从备份中提取配置文件
tar -xzf config_backup.tar.gz -C /tmp/
# 比较并手动迁移配置文件
# CentOS 与 Ubuntu 配置文件位置可能不同:
# /etc/httpd/conf/ → /etc/apache2/
# /etc/my.cnf → /etc/mysql/my.cnf
# /etc/php.ini → /etc/php/7.x/apache2/php.ini
3. 服务配置调整
- 修改服务启动脚本(Systemd unit files)
- 更新配置文件中的路径引用
- 调整 SELinux 相关设置(Ubuntu 使用 AppArmor)
四、数据迁移
1. 直接传输方法
# 使用 rsync(推荐)
rsync -avz -e ssh user@centos-server:/source/path/ /destination/path/
# 使用 scp
scp -r user@centos-server:/path/to/data /local/path/
2. 数据库迁移
# 在 CentOS 导出
mysqldump -u root -p --all-databases > alldb.sql
# 在 Ubuntu 导入
mysql -u root -p < alldb.sql
五、测试与验证
1. 功能测试
- 启动所有服务并检查状态
- 测试网络连接和端口监听
- 验证应用程序功能
- 检查日志文件是否有错误
2. 性能基准测试
- 比较关键应用的响应时间
- 验证资源使用情况
六、切换与监控
1. DNS切换
- 逐步更新 DNS TTL 值
- 先切换部分流量测试
2. 监控设置
# 安装监控XX
sudo apt install prometheus-node-exporter
# 检查系统日志
sudo journalctl -f
sudo tail -f /var/log/syslog
七、常见问题与注意事项
1. 主要差异
- 包管理:yum/dnf (RPM) → apt (DEB)
- 服务管理:systemctl(相同,但服务名可能不同)
- 文件结构:部分配置文件路径不同
- 防火墙:firewalld → ufw/iptables
- 安全模块:SELinux → AppArmor
2. 推荐工具
- 自动化工具:Ansible, Chef, Puppet
- 容器化:考虑使用 Docker 简化迁移
- 配置管理:使用 Git 管理配置文件
3. 回滚计划
- 保持原 CentOS 服务器运行一段时间
- 准备快速回滚方案
- 文档记录所有变更
简化迁移建议
对于复杂环境,建议:
- 容器化迁移:将应用 Docker 化后迁移
- 分阶段迁移:先迁移非关键服务
- 使用配置管理工具:用 Ansible 等工具统一管理
需要根据具体应用复杂度调整迁移策略。对于生产环境,建议先在测试环境完整演练一次迁移过程。
CLOUD技术笔记