CentOS 6.×下低版本Gitlab安装,备份,升级, 迁移踩坑实践
Posted 北京大雨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS 6.×下低版本Gitlab安装,备份,升级, 迁移踩坑实践相关的知识,希望对你有一定的参考价值。
背景: 公司Gitlab版本较老(8.12.2)且部署在阿里云低版本的系统(CentOS 6.8), 领导要求将所有阿里云机器迁移至华为云, 迁移服务不支持CentOS 7以下的版本, 镜像服务又过于麻烦, 故决定手动对其升级并迁移。
经过各种踩坑, 总结最佳实践。
思路及过程:
一 前置准备工作:
1 扩容硬盘: 一定要检查自己的服务器硬盘是否足够备份, 否则会导致备份失败, 尽量扩大一点。
由于服务器买的比较早, 不支持在线扩容, 且CentOS 6已结束声明周期, 需要切换yum源,具体可参考阿里云帮助文档: 扩展分区和文件系统_Linux系统盘 - 云服务器 ECS - 阿里云
2 备份镜像: 由于Gitlab备份时间较长, 建议直接使用阿里云自定义镜像, 备份镜像, 方便快捷, 在升级之后再备份不迟
3 迁移目标服务器: 在华为云(根据需要)购买相同系统(CentOS 6.8)的服务器(最低2核4G, 建议买大一点内存)
二 一些注意事项:
1 要注意yum源(系统版本问题), 硬盘大小的问题
2 安装Gitlab前根据需要自行安装: policycoreutils-python openssh-server 以及postfix服务, 并设开机自启, 这里可参考: 安装和使用GitLab - 云服务器 ECS - 阿里云
但是systemctl命令是在CentOS 7之后才有的, 7以前是使用service *** start 启动服务
chkconfig *** on设置开机自启动, 注意Gitlab10版本之后, 有用到sshd
3 有关Gitlab的一些注意: 升级时一定一定要先升级到当前大版本的最高版本, 然后再升级下一个大版本的最高版本(或者指定版本), 否则会出现各种奇怪的问题,
关于gitlab源的问题, 这里还是建议直接使用官方的源: gitlab/gitlab-ce - Packages · packages.gitlab.com 版本比较多
当然也可以使用清华大学的源: Index of /gitlab-ce/yum/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
4 常用指令:
编辑gitlab配置文件:
vim /etc/gitlab/gitlab.rb
查阅gitlab版本:
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
服务器间备份传输:
scp /var/opt/gitlab/backups/*** root@服务器IP:/var/opt/gitlab/backups/
更新后清理缓存:
gitlab-rake cache:clear
刷新配置文件:
gitlab-ctl reconfigure
重启gitlab:
gitlab-ctl restart
值得注意的是CentOS 6 要使用后缀带el6的rpm包, CentOS 7使用的是el7
三 升级当前服务器的Gitlab
笔者当前版本为gitlab-ce-8.12.2, 先升级到8.17.8, 再升级到9.5.9
1 下载到本地:
wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/6/gitlab-ce-8.17.8-ce.0.el6.x86_64.rpm/download.rpm
2 本地安装:
yum localinstall -y gitlab-ce-8.17.8-ce.0.el6.x86_64.rpm
这种方式较为稳妥, 不用考虑换源的问题, 其它方式也可以借鉴别的文章
注意: 每升级一次Gitlab, 建议刷新一次配置文件, 确保升级有效 (常会遇到404, 500, 502报错)
四 执行备份
1 执行备份前, 修改配置文件
# vim /etc/gitlab/gitlab.rb
gitlab_rails[‘manage_backup_path’] = true
gitlab_rails[‘backup_path’] = “/var/opt/gitlab/backups” -----------------------//gitlab备份目录
gitlab_rails[‘backup_archive_permissions’] = 0644 ------------------------//生成的备份文件权限
gitlab_rails[‘backup_keep_time’] = 604800 ----------------------------------//备份保留天数为7天
2 创建并赋予git备份目录权限: 这里很关键, 会导致备份失败, 在新服务器恢复时最好也走一遍
# mkdir -p /var/opt/gitlab/backups
# chown -R git.git /var/opt/gitlab/backups
# chmod -R 777 /var/opt/gitlab/backups
3 刷新配置文件, 使其生效
# gitlab-ctl reconfigure
4 手动备份gitlab命令。
# gitlab-rake gitlab:backup:create
注意: 这个过程会很漫长, 注意硬盘空间/备份权限等问题, 有其他问题, 记得留言讨论
五 新服务器的准备工作
1 参考步骤一和步骤二
2 如果购买的是华为云CentOS 6的版本, 更换yum源请参考: CentOS 6镜像源更换方法_弹性云服务器 ECS_常见问题_镜像源管理_华为云
六 新服务器安装Gitlab
1 直接安装相同版本Gitlab, 这里安装的是9.5.9, 参考步骤三
2 记得修改配置文件: external_url 'http://***.***.com 或者 http://ip:port'
3 如果80端口被占用, 可增加配置: nginx['listen_port'] = **, 端口问题可参考网上其它文章, 不再赘述
七 导入旧服务器备份
在需要迁移的服务器上执行
scp /var/opt/gitlab/backups/***_gitlab_backup.tar root@目标IP:/var/opt/gitlab/backups/
八 新服务器执行数据恢复
在新服务器执行
# gitlab-rake gitlab:backup:restore BACKUP=备份包名
九 检查数据
1 重启Gitlab, 刷新配置文件
2 访问新服务器的Gitlab检查账号和数据是否已同步过来
3 账号, 代码目录, 以及提交记录一般都能同步过来, 有可能会有代码丢失的情况, Gitlab的数据默认在 /var/opt/gitlab/git-data/ 下, 可自行检查代码, 如果代码丢失进入项目会报仓库找不到的错误: The repository for this project does not exist. 其实这时候可以直接把旧服务器上对应的仓库拷贝到新服务目录下, gitlab-rake cache:clear 刷新gitlab缓存即可。
参考文章:
以上是关于CentOS 6.×下低版本Gitlab安装,备份,升级, 迁移踩坑实践的主要内容,如果未能解决你的问题,请参考以下文章