如何将运行gocd server的Centos6.10迁移至Ubuntu20LTS
GoCD Server 从CentOS 6.10迁移至Ubuntu 20.04 LTS 实操步骤
一、原服务器(CentOS 6.10)迁移前准备
- 先确认原服务运行的GoCD准确版本号,执行
sudo /etc/init.d/go-server version查看,新服务器必须安装完全相同版本的GoCD,跨版本直接恢复配置大概率出现数据不兼容问题,后续要升级等迁移稳定后再操作。 - 停服锁数据,避免迁移过程中有新的构建记录、配置变更写入导致备份不一致:执行
sudo /etc/init.d/go-server stop,等1分钟后用ps aux | grep go-server确认没有残留进程再往下走。 - 打包核心数据,CentOS6下GoCD默认核心路径如下,全量打包:
- 主数据目录(含配置、流水线定义、构建历史、内置数据库、制品):
/var/lib/go-server/ - 启动配置文件(含JVM参数、自定义环境变量):
/etc/default/go-server - 如果自定义过jvm参数、日志规则单独存放在
/etc/go/目录下也一并纳入备份
- 主数据目录(含配置、流水线定义、构建历史、内置数据库、制品):
- 执行打包命令:
tar zcf gocd_migrate_backup_$(date +%Y%m%d).tar.gz /var/lib/go-server /etc/default/go-server /etc/go/ - 备份包生成后做md5校验,再传到新Ubuntu服务器,传完再在新服务器上做一次md5比对,防止传输过程中文件损坏。
- 额外记录原服务的端口配置、前置反向代理规则、外部依赖信息:如果没用GoCD内置H2数据库,而是外接了PostgreSQL/MySQL存储配置,单独导出对应数据库的全量逻辑备份;如果前置了Nginx做域名转发、HTTPS配置,把对应的Nginx配置也导出来。
二、新服务器(Ubuntu 20.04 LTS)基础环境配置
- 安装匹配版本的Java运行环境,GoCD 20.x及以上版本依赖OpenJDK 11,不要用更高版本JDK避免兼容性问题:执行
sudo apt update && sudo apt install -y openjdk-11-jre-headless,装完用java -version确认版本输出正确。 - 调整系统文件句柄限制,GoCD运行时需要较高的文件打开数,编辑
/etc/security/limits.conf追加以下配置:go soft nofile 65536 go hard nofile 65536 - 安装和原服务器完全同版本的GoCD Server,安装完成后立刻执行
sudo systemctl stop go-server停掉默认启动的服务,防止服务初始化生成新的空数据目录影响后续恢复。
三、数据恢复与配置调整
- 先把新服务器上GoCD默认生成的空目录做个备份,方便出问题回滚:
sudo mv /var/lib/go-server /var/lib/go-server_default_empty_baksudo mv /etc/default/go-server /etc/default/go-server_default_empty_bak - 把之前传过来的备份包解压到系统根路径:
sudo tar zxf gocd_migrate_backup_xxxxxx.tar.gz -C / - 修正文件属主,Ubuntu下GoCD默认运行用户是
go、用户组是go,解压后的文件默认是root权限,必须修正否则服务起不来:sudo chown -R go:go /var/lib/go-server /etc/default/go-server /etc/go - 配置核对:
- 打开
/etc/default/go-server检查JVM内存参数、自定义数据路径配置,把写死老服务器IP、老路径的配置改成新服务器对应值 - 如果用了外接数据库,确认新服务器能正常连通数据库地址,数据库端已经放通新服务器的访问权限
- 同步前置反向代理配置(如果有),把后端转发地址指向新服务器的GoCD默认端口
127.0.0.1:8153,同步HTTPS证书、域名配置。
- 打开
四、启动验证与收尾
- 启动GoCD服务并设置开机自启:
sudo systemctl daemon-reloadsudo systemctl start go-serversudo systemctl enable go-server - 跟踪启动日志排查问题:
sudo journalctl -u go-server -f,首次启动加载历史数据需要3-10分钟不等,不要看到短时间没响应就反复重启服务,容易损坏内置数据库。 - 功能验证清单:
- 访问
http://新服务器IP:8153(或者绑定的域名)能正常打开登录页面,原有的管理员账号、普通用户账号能正常登录 - 检查所有流水线配置、环境分组、用户权限、插件配置、构建历史记录、历史制品文件完整无缺失
- 选1-2条核心测试流水线手动触发构建,确认关联的GoCD Agent能正常连接、代码拉取、构建执行、制品上传、通知发送全流程正常
- 检查定时触发、代码提交触发的流水线规则配置正常生效
- 访问
- 验证全部通过后,把原CentOS服务器上的GoCD服务设置为开机禁用,观察7天无异常后再正式下线原服务器。
踩坑提醒:如果原服务用的是内置H2数据库,迁移过程中绝对不要中途升级GoCD版本,H2的版本兼容性极差,跨版本很容易出现数据库文件损坏无法读取的问题,等迁移完成服务稳定运行后,再按照要求逐版本升级即可。
内容的提问来源于stack exchange,提问作者obyerere
相关产品推荐
相关产品推荐

