一、Gitlab 安裝
1. 環境准備
本教程主要以 CentOS 7為主,其他系統請查看官方文檔對比。
1. 安裝和打開 http 和 ssh 的權限
sudo yum install -y curl policycoreutils-python openssh-server sudo systemctl enable sshd sudo systemctl start sshd sudo firewall-cmd --permanent --add-service=http sudo systemctl reload firewalld
2. 安裝郵件服務 postfix
sudo yum install postfix sudo systemctl enable postfix sudo systemctl start postfix
使用其他郵件服務,可以根據官方文檔自行修改:
https://docs.gitlab.com/omnibus/settings/smtp.html
2. 鏡像切換
Gitlab 國外鏡像速度一向感人,而且是不是的還抽風,所以在國內搭建 Gitlab 使用的時候,還是切換成牆內鏡像比較放心。目前官方支持的國內鏡像是清華大學的鏡像站,地址:https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/
1. 新建鏡像 repo
新建 /etc/yum.repos.d/gitlab-ce.repo
,內容為:
[gitlab-ce] name=Gitlab CE Repository baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ gpgcheck=0 enabled=1
2. 執行命令下載
sudo yum makecache sudo yum install gitlab-ce
3. 配置使用
安裝完成之后,可以在/etc/gitblab/gitlab.rb
中按照需求修改配置,
主要需要修改external_url
,改成自己使用的 url 地址。
執行命令配置生效:
gitlab-ctl reconfigure
如果想使用已有的 nginx,或者相對 gitlab 內置 nginx 進行高級配置的話,可以參考官方文檔:
https://docs.gitlab.com/omnibus/settings/nginx.html
例如,修改監聽端口,增加 ssl 配置,設置 header:
nginx['listen_port'] = 8081 # For GitLab nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt" nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key" # proxy set header nginx['proxy_set_headers'] = { "X-Forwarded-Proto" => "http", "CUSTOM_HEADER" => "VALUE" }
需要注意的是,修改配置之后,都需要執行gitlab-ctl reconfigure
命令,使配置生效。
二、Gitlab 備份
Gitlab 成功運行起來之后,最終的事情就是定期的備份,遇到問題后的還原。
1. 備份配置
默認 Gitlab 的備份文件會創建在/var/opt/gitlab/backups
文件夾中,格式為時間戳_日期_版本號_gitlab_backup.tar
,例如:1515031353_2018_01_04_10.3.2_gitlab_backup.tar
。
修改備份文件夾,需要修改配置文件/etc/gitlab/gitlab.rb
中的:
gitlab_rails['backup_path'] = '/your_wish/backups'
然后gitlabctl-reconfigure
生效。
2. 手動備份
命令:gitlab-rake gitlab:backup:create
會在命令執行的時間點,在你配置的文件夾或者默認文件夾創建一個備份文件。
3. 自動備份
Gitlab 支持 crontab
來創建計划任務,執行命令:sudo crontab -e -u root
,為 root 用戶,創建並編輯 crontab。
例如,每周二到周六的早晨創建一個自己命名規則的備份:
15 04 * * 2-6 umask 0077; tar cfz /secret/gitlab/backups/$(date "+etc-gitlab-\%s.tgz") -C / etc/gitlab
crontab 可以參考:
http://www.pantz.org/software/cron/croninfo.html
更多備份用法,可以參考:
https://docs.gitlab.com/omnibus/settings/backups.html#backups
4. 恢復備份
先停止 gitlab 相關服務:
sudo gitlab-ctl stop unicorn sudo gitlab-ctl stop sidekiq
執行備份恢復命令:
gitlab-rake gitlab:backup:restore BACKUP=1515031353_2018_01_04_10.3.2
為了防止有問題,還是需要執行重新配置,用來重新配置和啟動:
gitlab-ctl reconfigure
5. 遷移,及版本不一致問題
Gitlab 遷移
Gitlab 的遷移非常簡單,只需要在目標服務器上安裝好之后,把 Gitlab 的備份文件放到備份目錄中,然后執行上一步的恢復備份命令即可。
Gitlab 遷移版本不一致問題
但是Gitlab 有個不爽的地方就是,不同版本號的備份文件不能相互使用。有時候備份文件是舊版本,安裝的時候自動安裝了最新版本,這時候備份文件就沒辦法使用了,怎么辦呢?
- 先卸載掉已經安裝的最新版Gitlab:
sudo yum remove gitlab-ce
- 在 Gitlab package 地址https://packages.gitlab.com/gitlab/gitlab-ce中找到對應操作系統和版本的安裝包,例如 CentOS 7,Gitlab 10.3.1對應的是gitlab-ce-10.3.1-ce.0.el7.x86_64.rpm
執行安裝命令
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash sudo yum install gitlab-ce-10.3.1-ce.0.el7.x86_64
然后重復之前的安裝、配置、恢復備份的目錄即可。