gogs迁移服务器记录
gogs迁移服务器记录
一、前期工作
- 备份旧服务器gogs-repositories仓库目录。使用scp拷贝或rsync备份至新服务器目录。

- 导出gogs数据库文件
sudo mysqldump -h localhost -u gogs -P 3306 --no-tablespaces -p gogs> /www/gogs.sql
- GitHub上下载新的软件包至新服务器。https://github.com/gogs/gogs/releases/tag/v0.12.6(避免出现问题,与原先版本保持一致)
二、新服务器
- 创建gogs数据库并导入数据。 
- 解压gogs软件包,将备份的 - gogs-repositories仓库放到指定位置,默认在- gogs软件根目录。
- 创建git用户,并修改目录所属权限为 - git- 1 
 2
 3
 4- sudo adduser git 
 sudo su git
 sudo chown -R git:git /www/opt/gogs
- 运行gogs软件, - ./gogs web,浏览器运行安装程序,- xxx.xxx.xx.xx:3000- 填写对应配置信息。  
成功迁移:

三、报错解决
- 无法识别 ‘git’ 命令:exec: “git”: executable file not found in $PATH - 安装 - git- 1 - yum install git -y 
- 运行系统用户非当前用户:git -> root - 启动gogs软件服务时,必须切换到git用户。 - 1 - su git 
- 您不能够在未创建管理员用户的情况下禁止注册。关闭 - 禁用用户自主注册,后期再打开,原先的数据库中已经有管理员用户了。 
- 运行后直接结束  - 查看日志: - /gogs/log/gogs.log
在新旧服务器内核一致时,不需要更换
gogs软件内核版本时,直接将旧服务器gogs相关文件全部拷贝至新服务器,进行数据库等相关配置后即可成功迁移。
- 更改了域名解析至新服务器ip,过了600秒,还是访问到旧服务器的服务。 - 需要将旧服务器绑定的nginx域名删除,新服务才能够生效。 
- 迁移成功后push报错`remote: hooks/pre-receive: line 2: /www/gogs/gogs: No such file or directory - 检查仓库下hooks文件夹下的 pre-receive 的内容,发现路径 - /www/gogs/gogs是错误的,于是修改错误的路径为迁移后gogs的目录,再测试push一次,竟然成功push。- post-receive- 1 
 2
 "/www/gogs/gogs" hook --config=' /www/gogs/gogs/custom/conf/app.ini' pre-receive- 但是这么多仓库一个个手动修改太浪费时间了。翻箱倒柜地找了一下,在管理员账号 - 重新同步所有仓库的 pre-receive、update 和 post-receive 钩子。执行即可。  
四、Systemd 系统服务运行
参考:https://yuencode.cn/2022/03/27/Gogs%E6%90%AD%E5%BB%BA%E6%80%BB%E7%BB%93/
gogs.service
| 1 | [Unit] | 
