本地使用的是 macOS,但目标机器是 CentOS 7.5,我们需要特别小心地准备兼容的安装包。以下是详细步骤:
准备工作:在 macOS 上设置环境
1. 创建工作目录
mkdir -p ~/yapi-offline-migration/centos7.5
cd ~/yapi-offline-migration/centos7.5
2. 下载 CentOS 7.5 兼容的 Docker 安装包
由于你使用的是 macOS,但需要 CentOS 的 RPM 包,你有几种选择:
选项 A:使用 Docker 容器模拟 CentOS 环境(推荐)
# 启动一个 CentOS 7 容器来下载所需的包
docker run -it --name centos-downloader -v $(pwd):/output centos:7 /bin/bash
在容器内执行:
# 更新并安装必要工具
yum update -y
yum install -y yum-utils wget# 添加 Docker CE 仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 下载 Docker CE 及所有依赖(指定兼容版本)
yum install --downloadonly --downloaddir=/output/docker \docker-ce-18.06.3.ce-3.el7 \docker-ce-cli-18.06.3.ce-3.el7 \containerd.io-1.6.26-3.1.el7# 下载系统依赖
yum install --downloadonly --downloaddir=/output/docker \device-mapper-persistent-data \lvm2 \libseccomp# 退出容器
exit
选项 B:手动下载所需 RPM 包
如果无法使用 Docker 容器,你可以手动从以下地址下载:
- Docker CE: https://download.docker.com/linux/centos/7/x86_64/stable/Packages/
- 依赖包: http://mirror.centos.org/centos/7/os/x86_64/Packages/
需要下载的具体包(版本可能略有不同):
- docker-ce-18.06.3.ce-3.el7.x86_64.rpm
- docker-ce-cli-18.06.3.ce-3.el7.x86_64.rpm
- containerd.io-1.6.26-3.1.el7.x86_64.rpm
- device-mapper-persistent-data-0.8.5-3.el7.x86_64.rpm
- lvm2-7:2.02.187-6.el7_9.5.x86_64.rpm
- libseccomp-2.3.1-4.el7.x86_64.rpm
3. 下载 Docker Compose
mkdir -p docker-compose
cd docker-compose# 下载兼容的 Docker Compose 版本
curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-Linux-x86_64 -o docker-compose
chmod +x docker-compose
4. 导出 Docker 镜像
mkdir -p images# 导出 MongoDB 镜像
docker save -o images/mongo.tar mongo:5.0# 导出 YApi 镜像
docker save -o images/yapi.tar registry.cn-hangzhou.aliyuncs.com/anoyi/yapi
5. 备份 MongoDB 数据
mkdir -p app-data# 创建 MongoDB 数据备份
docker exec mongo-yapi mongodump --uri="mongodb://anoyi:anoyi.com@localhost:27017/yapi" --out=/tmp/dump
docker cp mongo-yapi:/tmp/dump app-data/mongodb-dump
6. 复制配置文件
# 复制 docker-compose.yml
cp /path/to/your/docker-compose.yml app-data/# 复制 config.json
cp /path/to/your/config.json app-data/
7. 下载系统工具(可选但推荐)
mkdir -p system-deps# 使用 CentOS 容器下载系统工具
docker run -it --rm -v $(pwd)/system-deps:/output centos:7 /bin/bash -c \"yum install --downloadonly --downloaddir=/output curl wget tar gzip net-tools ca-certificates"
📦 最终文件结构
在 macOS 上准备的目录结构应该是:
~/yapi-offline-migration/centos7.5/
├── docker/ # Docker CE RPM 包
│ ├── docker-ce-18.06.3.ce-3.el7.x86_64.rpm
│ ├── docker-ce-cli-18.06.3.ce-3.el7.x86_64.rpm
│ ├── containerd.io-1.6.26-3.1.el7.x86_64.rpm
│ └── ...
├── docker-compose/ # Docker Compose 二进制文件
│ └── docker-compose
├── images/ # Docker 镜像
│ ├── mongo.tar
│ └── yapi.tar
├── app-data/ # 应用数据
│ ├── docker-compose.yml
│ ├── config.json
│ └── mongodb-dump/
└── system-deps/ # 系统依赖包├── curl-7.29.0-*.rpm├── wget-1.14-*.rpm└── ...
🚚 将文件传输到离线 CentOS 7.5 服务器
由于目标机器完全不能联网,你需要使用离线方式传输文件:
方法 1: 使用 USB 驱动器
- 将整个
centos7.5
目录复制到 USB 驱动器 - 将 USB 驱动器连接到 CentOS 7.5 服务器
- 复制文件到服务器上
方法 2: 使用内部网络传输
如果两台机器在同一隔离网络中:
# 在 macOS 上压缩文件
tar -czvf centos7.5-offline.tar.gz centos7.5/# 使用 scp 传输(如果网络允许)
scp centos7.5-offline.tar.gz user@centos-server:/tmp/
方法 3: 使用物理介质
如果完全无网络,可以:
- 将文件刻录到 DVD/CD
- 使用外接硬盘复制
- 使用跨平台文件共享工具(如 HFS+ 格式的驱动器)
🛠️ 在 CentOS 7.5 服务器上的安装步骤
一旦文件传输到 CentOS 7.5 服务器,按照以下步骤安装:
1. 准备环境
# 解压文件(如果使用了压缩包)
tar -xzvf centos7.5-offline.tar.gz -C /tmp/
cd /tmp/centos7.5# 安装基本工具
cd system-deps
sudo yum localinstall -y *.rpm
2. 安装 Docker
cd /tmp/centos7.5/docker# 安装依赖
sudo yum localinstall -y device-mapper-persistent-data-*.rpm lvm2-*.rpm# 安装 Docker CE
sudo yum localinstall -y *.rpm# 启动 Docker
sudo systemctl start docker
sudo systemctl enable docker# 添加用户到 docker 组
sudo usermod -aG docker $(whoami)
# 需要注销重新登录或执行:
newgrp docker
3. 安装 Docker Compose
sudo cp /tmp/centos7.5/docker-compose/docker-compose /usr/local/bin/
sudo chmod +x /usr/local/bin/docker-compose
4. 导入 Docker 镜像
cd /tmp/centos7.5/images
docker load -i mongo.tar
docker load -i yapi.tar
5. 恢复应用和数据
sudo mkdir -p /opt/yapi
sudo cp -r /tmp/centos7.5/app-data/* /opt/yapi/
cd /opt/yapi# 启动服务
docker-compose up -d# 检查状态
docker-compose ps
📋 验证清单
在 macOS 上准备文件时,请确保:
- ✅ 所有 RPM 包都是 CentOS 7.5 兼容的 x86_64 版本
- ✅ Docker Compose 是 Linux 版本(不是 macOS 版本)
- ✅ Docker 镜像已正确导出
- ✅ MongoDB 数据已完整备份
- ✅ 配置文件已更新为适合生产环境的设置
💡 额外建议
- 创建安装脚本:在 macOS 上创建一个安装脚本,简化在 CentOS 上的安装过程
- 测试环境:如果可能,先在虚拟机中测试整个迁移过程
- 文档记录:记录所有步骤和可能的问题,便于排查
- 回滚计划:准备回滚方案,以防迁移失败
这样,你就可以在 macOS 上准备好所有必要的文件,然后在完全离线的 CentOS 7.5 服务器上成功部署 YApi 服务了。
本文来自博客园,作者:茄子_2008,转载请注明原文链接:https://www.cnblogs.com/xd502djj/p/19102857