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
4sudo 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] |