You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将运行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_bak
    sudo 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-reload
    sudo systemctl start go-server
    sudo 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 20:45:51