首先信任 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
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备份目录,默认为/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
如果使用集成包安装,这可以直接安装最新版本的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,根据你的需要修改。
将原版备份的文件复制到新版的备份目录进行还原。
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/
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
dpkg-i /data/software/gitlab/gitlab-ce_8.1.4-ce.0_amd64.deb gitlab-ctl reconfigure
注意:
(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
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