Gitlab 9 安装配置与备份还原

关键字:gitlab,安装配置,备份还原
发布日期:2020-11-12 10:06:29.0

安装

首先信任 GitLab 的 GPG 公钥:

#Ubuntu/Debian curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null #Ubuntu 14.04 LTS echo "deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu trusty main" > /etc/apt/sources.list.d/gitlab-ce.list sudo apt-get install gitlab-ce -y

修改/etc/gitlab.rb配置文件,根据需要修改相应参数后,重新配置gitlab

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

备份gitlab

Omnibus package
Gitlab Omnibus方式安装所有的配置文件存储在/etc/gitlab,应用程序存储在/opt/gitlab,相关数据默认存储在/var/opt/gitlab目录下,日志放在/var/log/gitlab。
备份Gitlab配置文件
我们可以通过crontab定时进行备份,具体如下:

sudo crontab -e -u root
15 04 * * 2-6  umask 0077; tar -cfz /backup/gitlab/backups/$(date "+etc-gitlab-\%s.tgz") -C / etc/gitlab

备份应用程序数据

#Omnibus package
sudo gitlab-rake gitlab:backup:create
#source install
sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production
#docker container
docker exec -t  gitlab-rake gitlab:backup:create
#bitnami install
bash /opt/gitlab-8.1.4-1/use_gitlab
cd /opt/gitlab-8.1.4-1/apps/gitlab/htdocs
sudo su git
bundle exec rake gitlab:backup:create RAILS_ENV=production

还原Gitlab

将备份文件复制到Gitlab备份目录,默认为/var/opt/gitlab/backups,我们这里是/data/gitlab/backup:

sudo cp 1493107454_2017_04_25_9.1.0_gitlab_backup.tar /data/gitlab/backups/

停止连接数据库的程序,让其他Gitlab服务正常运行:

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
# Verify
sudo gitlab-ctl status

接下来还原备份,指定要还原的备份文件时间戳,注意这会重写Gitlab数据库。

sudo gitlab-rake gitlab:backup:restore BACKUP=1493107454_2017_04_25_9.1.0

重新启动Gitlab服务,并进行检查。

sudo gitlab-ctl start
sudo gitlab-rake gitlab:check SANITIZE=true

Gitlab升级

如果使用集成包安装,这可以直接安装最新版本的Omnibus package即可,安装程序会自动升级。强烈建议升级前对Gitlab进行备份。

sudo apt-get upgrade gitlab-ce

或者 dpkg -i gitlab-ce_9.2.6-ce.0_amd64.deb

如果是源码安装或其他第三方发行版本安装,建议先迁移到相同版本的Gitlab Omnibus package,然后在进行升级。
完整备份原来的Gitlab数据和应用程序,SSH等文件。具体请参考上文。
安装与原Gitlab版本完全一致的Omnibus发行版本(如:8.1.4)。
修改新安装的gitlab配置文件/etc/gitlab/gitlab.rb,根据你的需要修改。
将原版备份的文件复制到新版的备份目录进行还原。

例如:将Bitnami Gitlab迁移到Omnibus并升级到最新版本

1.备份Bitnami Gitlab应用程序数据

bash /opt/gitlab-8.1.4-1/use_gitlab
cd /opt/gitlab-8.1.4-1/apps/gitlab/htdocs
sudo su git
bundle exec rake gitlab:backup:create RAILS_ENV=production
mkdir /home/gitlab/backup/`date +%F`
exit
mv tmp/backups/1498185988_gitlab_backup.tar /home/gitlab/backup/2017-06-23/

2.完整备份Bitnami Gitlab和系统数据

tar -czvf /data/backup/gitlab/bitnami.gitlab.8.1.4-1.`date +%F.%H%M%S`.tar.gz /data/gitlab
tar -czvf /data/backup/passwd.group.shadows.`date +%F.%H%M%S`.tar.gz /etc/passwd* /etc/group* /etc/shadow*
tar -czvf /data/backup/home_git.`date +%F.%H%M%S`.tar.gz /home/git

3.安装与原Gitlab版本完全一致的Omnibus发行版本

dpkg-i /data/software/gitlab/gitlab-ce_8.1.4-ce.0_amd64.deb 
gitlab-ctl reconfigure

4.修改新安装的gitlab配置文件/etc/gitlab/gitlab.rb,根据你的需要修改。

5.将原版备份的文件复制到新版的备份目录进行还原。

注意:
(1).Gitlab 9.2开始时间戳格式将从EPOCH_YYYY_MM_DD 修改成 EPOCH_YYYY_MM_DD_GitLab version,例如:1493107454_2017_04_25 改成 1493107454_2017_04_25_9.2.0
(2).还原安全秘钥,/etc/gitlab/gitlab-secrets.json (for Omnibus packages) 或 /home/git/gitlab/.secret (source).
cp /home/gitlab/backup/2017-06-23/1498185988_gitlab_backup.tar /data/gitlab/backups/
chown git. -R /data/gitlab/backups/
停止连接数据库的程序,让其他Gitlab服务正常运行:

sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
# Verify
sudo gitlab-ctl status

接下来还原备份,指定要还原的备份文件时间戳,注意这会重写Gitlab数据库。

sudo gitlab-rake gitlab:backup:restore BACKUP=1493107454_2017_04_25_9.1.0

重新启动Gitlab服务,并进行检查。

sudo gitlab-ctl start
sudo gitlab-rake gitlab:check SANITIZE=true

6.升级Gitlab到最新版本

sudo gitlab-rake gitlab:backup:create
sudo tar -czvf /data/backup/gitlab/`date +%F`
dpkg -i  /data/software/gitlab/gitlab-ce_9.2.6-ce.0_amd64.deb
sudo gitlab-rake gitlab:check SANITIZE=true