本次安裝使用阿里云ECS念恍, CentOS7.6犁功。
1. 配置yum源
sudo vi /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. 更新本地yum緩存
sudo yum clean all
sudo yum makecache
3. 安裝Gitlab
sudo yum -y install gitlab-ce #自動安裝最新版
sudo yum -y install gitlab-ce-12.0.0 #安裝指定版本, 本次安裝使用版本
4. 修改配置文件
sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.origin
sudo vi /etc/gitlab/gitlab.rb
4.1 修改URL
## GitLab URL
external_url 'http://101.132.153.31:7339'
4.2 Email 配置
如想使用Postfix來發(fā)送郵件,在安裝期間請選擇’Internet Site’. 您也可以用sendmai或者 配置SMTP服務 并 使用SMTP發(fā)送郵件.
### Email Settings
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'XXXXXX@yeah.net'
gitlab_rails['gitlab_email_display_name'] = 'XXGitHub'
gitlab_rails['gitlab_email_reply_to'] = 'XXX@yeah.net'
gitlab_rails['gitlab_email_subject_suffix'] = ''
### GitLab email server settings
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.yeah.net"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "XXXXXX@yeah.net"
gitlab_rails['smtp_password'] = "XXXXXX"
gitlab_rails['smtp_domain'] = "yeah.net"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
4.3 備份配置
### Backup Settings
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/export/home/scm/gitlab/backups"
###! The duration in seconds to keep backups before they are allowed to be deleted
gitlab_rails['backup_keep_time'] = 604800
5. 配置并重啟
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
6. 測試Email配置
sudo gitlab-rails console -e production
在控制臺窗口執(zhí)行
>Notify.test_email("weiminsun@163.com","hello","gitlab").deliver_now
7. 備份
7.1 手工備份
gitlab-rake gitlab:backup:create
使用以上命令會在備份目錄(不改配置的話默認為/var/opt/gitlab/backups)目錄下創(chuàng)建一個名稱類似為******_gitlab_backup.tar的壓縮包, 這個壓縮包就是Gitlab整個的完整部分, 其中開頭的******是備份創(chuàng)建的日期
-rw------- 1 git git 979077120 Sep 17 16:00 1568704197_2019_09_17_12.0.0_gitlab_backup.tar
相應的配置文件需要備份:
/etc/gitlab/gitlab.rb 配置文件須備份
/var/opt/gitlab/nginx/conf nginx配置文件
/etc/postfix/main.cfpostfix 郵件配置備份
7.2 Gitlab自動備份
實現(xiàn)每天凌晨2點進行一次自動備份:通過crontab使用備份命令實現(xiàn)
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
8. 恢復
既可以是本系統(tǒng)的數(shù)據(jù)恢復衡未,亦可以在另外一臺一樣版本的Gitlab上做數(shù)據(jù)遷移尸执。
8.1 停止相關數(shù)據(jù)連接服務
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
8.2 從1568704197_2019_09_17_12.0.0編號備份中恢復
sudo gitlab-rake gitlab:backup:restore BACKUP=1568704197_2019_09_17_12.0.0
8.3 啟動Gitlab
sudo gitlab-ctl start
9. gitlab遷移
遷移如同備份與恢復的步驟一樣, 只需要將老服務器備份目錄下的備份文件拷貝到新服務器上的備份目錄/var/opt/gitlab/backups即可(如果你沒修改過默認備份目錄的話).
需要注意的是新服務器上的Gitlab的版本必須與創(chuàng)建備份時的Gitlab版本號相同. 比如新服務器安裝的是12.0.0版本的Gitlab, 那么遷移之前, 最好將老服務器的Gitlab 升級為12.0.0在進行備份
/etc/gitlab/gitlab.rb gitlab配置文件須遷移,遷移后需要調(diào)整數(shù)據(jù)存放目錄
/var/opt/gitlab/nginx/conf nginx配置文件目錄須遷移
/etc/gitlab/gitlab-secrets.json # 復制新服務器相同的目錄下
/etc/ssh/key # 復制到新服務器相同目錄下,解決ssh key認證不成功問題
# sudo gitlab-ctl stop unicorn
ok: down: unicorn: 0s, normally up
# sudo gitlab-ctl stop sidekiq
ok: down: sidekiq: 0s, normally up
# sudo chmod 777 /var/opt/gitlab/backups/1568704197_2019_09_17_12.0.0_gitlab_backup.tar
或 # sudo chown git:git /var/opt/gitlab/backups/1568704197_2019_09_17_12.0.0_gitlab_backup.tar
# sudo gitlab-rake gitlab:backup:restore BACKUP=1568704197_2019_09_17_12.0.0
10. Gitlab升級
10.1 關閉gitlab服務
sudo gitlab-ctl stop unicorn
sudo gitlab-ctl stop sidekiq
sudo gitlab-ctl stop nginx
10.2 備份gitlab
sudo gitlab-rake gitlab:backup:create
10.3 下載gitlab的RPM包并進行升級
sudo curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum update gitlab-ce
或者直接安裝高版本
sudo yum install gitlab-ce-12.2.5-ce.0.el7.x86_64
或者上官網(wǎng)下載最新版本 gitlab對應軟件包 gitlab官網(wǎng)
使用
rpm -Uvh gitlab-ce-12.2.5-ce.0.el7.x86_64
報錯.
Error executing action run
on resource 'ruby_block[directory resource: /var/opt/gitlab/git-data/repositories]'
解決方法:
sudo chmod 2770 /var/opt/gitlab/git-data/repositories
10.4 啟動并查看gitlab版本信息
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
#sudo head -1 /opt/gitlab/version-manifest.txt
gitlab-ce 12.2.5
10.5 gitlab更改默認Nginx
更換gitlab自帶Nginx缓醋,使用自行編譯Nginx來管理gitlab服務如失。
編輯gitlab配置文件禁用自帶Nignx服務器
sudo vi /etc/gitlab/gitlab.rb
#設置nginx為false,關閉自帶Nginx
nginx['enable'] = false
檢查默認nginx配置文件,并遷移至新Nginx服務
/var/opt/gitlab/nginx/conf/nginx.conf #nginx配置文件,包含gitlab-http.conf文件
/var/opt/gitlab/nginx/conf/gitlab-http.conf #gitlab核心nginx配置文件
重啟 nginx送粱、gitlab服務
$ sudo gitlab-ctl reconfigure
$ sudo service nginx restart
訪問報502岖常。原因是nginx用戶無法訪問gitlab用戶的socket文件。 重啟gitlab需要重新授權(quán)
chmod -R o+x /var/opt/gitlab/gitlab-rails
11. 附錄:
11.1 啟動腳本
sudo cat /etc/systemd/system/gitlab.service
[Unit]
Description=gitlab
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/gitlab-ctl start
ExecStop=/bin/gitlab-ctl stop
[Install]
WantedBy=multi-user.target
sudo cat /usr/lib/systemd/system/gitlab-runsvdir.service
[Unit]
Description=GitLab Runit supervision process
After=basic.target
[Service]
ExecStart=/opt/gitlab/embedded/bin/runsvdir-start
Restart=always
[Install]
WantedBy=basic.target
11.2 防火墻
/sbin/iptables -I INPUT -p tcp --dport 7339 -j ACCEPT
service iptables save
systemctl restart iptables.service
11.3 reconfigure報錯
sudo systemctl restart gitlab-runsvdir
12. 參考
https://docs.gitlab.com/ee/raketasks/backup_restore.html
https://docs.gitlab.com/omnibus/settings/backups.html