https://www.gitlab.cc/installation/#centos-6
1. 安裝並配置必要的依賴關系
如果你想使用 Postfix 發送郵件,請在安裝過程中根據提示選擇 'Internet Site'。 你也可以用 Sendmail 或者
配置一個自定義的 SMTP 服務 並 把它作為一個 SMTP 服務器。
在 CentOS 系統上,下面的命令將會打開系統防火牆 HTTP 和 SSH 的訪問。
sudo yum install curl openssh-server postfix cronie
sudo service postfix start
sudo chkconfig postfix on
sudo lokkit -s http -s ssh
2. 添加 GitLab 鏡像源並安裝
sudo yum install gitlab-ee
如果你不太習慣使用命令管道的方式安裝鏡像倉庫,你可以在這里找到
完整的安裝腳本 或者
選擇系統對應的安裝包 使用下面的命令手動安裝。
rpm -i gitlab-ee-XXX.rpm
3. 配置並啟動 GitLab
gitlab.rb的配置:
external_url '
http://git.***.com'
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '
gitlab@***.com'
gitlab_rails['gitlab_email_reply_to'] = '
gitlab@***.com'
gitlab_rails['gitlab_default_can_create_group'] = false
備份目錄:
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/export/gitlab/backups"
gitlab_rails['backup_archive_permissions'] = 0644
gitlab_rails['backup_keep_time'] = 604800
git_data_dirs({
"default" => {
"path" => "/export/git-data"
}
})
郵件配置:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "
smtp.***.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "
gitlab@***.com"
gitlab_rails['smtp_password'] = "Hn_2018"
gitlab_rails['smtp_domain'] = "
***.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_openssl_verify_mode'] = 'none'
開啟注冊:
registry_external_url '
https://registry.***.com'
registry['enable'] = true
pages_external_url "
http://***.cn/"
registry_nginx['ssl_certificate'] = "/etc/gitlab/ssl/server.pem"
registry_nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/server.key"
sudo gitlab-ctl reconfigure
重啟配置
4. 通過瀏覽器訪問上一步配置的域名
第一次訪問 GitLab,系統會重定向 url 到重置密碼的頁面,你需要輸入初始化管理員賬號的密碼。 設置完成后,系統會重定向到登錄界面,你就可以使用剛才輸入的密碼登錄系統了。
系統默認的管理員賬號為
root, 登錄系統后,你可以修改管理員賬號為自己喜歡的賬號。
更改倉庫存儲位置
默認時GitLab的倉庫存儲位置在“/var/opt/gitlab/git-data/repositories”,在實際生產環境中顯然我們不會存儲在這個位置,一般都會划分一個獨立的分區來存儲倉庫的數據,我這里規划把數據存放在“/data/git-data”目錄下。
root@test1:~/tools# mkdir -pv /data/git-data
mkdir: 已創建目錄 "/data"
mkdir: 已創建目錄 "/data/git-data"
root@test1:~# chown -R git.git /data/git-data #修改創建目錄的屬主和屬組為git用戶
root@test1:~/tools# cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak
root@test1:~/tools# vim /etc/gitlab/gitlab.rb
#啟用git_data_dirs參數,並修改如下:
git_data_dirs 路徑 "/data/git-data"

gitlab-rake cache:clear RAILS_ENV=production
找不到倉庫的時候執行
/etc/gitlab/gitlab.rb中描述備份位置,默認備份到/var/opt/gitlab/backups/
如果想要備份到/mnt/backups,修改以下配置,去掉注釋
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = “/mnt/backups" #備份目錄
gitlab_rails['backup_archive_permissions'] = 0644 #生成的文件權限
gitlab_rails['backup_keep_time'] = 864000 #保留10天
修改完成后重新配置:
gitlab-ctl reconfigure
備份命令:
gitlab-rake gitlab:backup:create
自動備份:
也可以通過crontab使用備份命令實現自動備份:
sudo su -
crontab -e
加入以下, 實現每天凌晨2點進行一次自動備份:
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
恢復:
# 停止相關數據連接服務
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
# 從1393513186編號備份中恢復
gitlab-rake gitlab:backup:restore BACKUP=1393513186
# 啟動Gitlab
sudo gitlab-ctl start
遷移:
與恢復一樣,但是要求兩個GitLab版本號一致
GitLab備份腳本示例:
#!/bin/bash
#root user
#crontab -e
#add
#56 00 * * * /home/delta/gitautobackup.sh
#every data 00:56 backup
gitBaseBackup="GitLab_Backup"
gitnewBackup=$gitBaseBackup/Backup_new
gitoldBackup=$gitBaseBackup/Backup_old
ftpUrl="192.168.10.209"
ftpUser="administrator"
ftpPasswd="Delta123"
localDir="/home/delta/GitLab_Backup"
localnewBackup=$localDir/Backup_new
localoldBackup=$localDir/Backup_old
if [ ! -d $localnewBackup ]; then
mkdir -p $localnewBackup
fi
if [ ! -d $localoldBackup ]; then
mkdir -p $localoldBackup
fi
if [ -f $localnewBackup/*.tar ]; then
#delete old
echo "delete old backup"
rm -rf $localoldBackup/*
#move new to old
echo "move new to old"
mv $localnewBackup/* $localoldBackup
else
echo "no new backup to old"
fi
#git own backup directory
echo "change backup directory owner to git"
chown -R git $localDir
#create new git backup
echo "GitLab Backup ..."
gitlab-rake gitlab:backup:create
#check backup is whether successful
if [ ! -f $localnewBackup/*.tar ]; then
cd $localDir
currentTime=`date " %Y-%m-%d %H:%M:%S"`
#currentTimeStamp=`date -d "$currentTime" `
echo ${currentTime}" Backup GitLab error! exit!"
echo ${currentTime}" Backup GitLab error! " >>GitLabBackupError.log
exit
fi
cd $localDir
#change owner back to delta
chown -R delta $localDir
#delete ftp backup
echo "push to ftp"
ftp -n<<!
open $ftpUrl
user $ftpUser $ftpPasswd
binary
cd $gitBaseBackup
prompt off
lcd $localnewBackup/
put *.tar
bye
!
echo "backup successful"
exit
升級:
1. Make a backup (Optional)
If you would like to make a backup before updating, the below command will backup data in /var/opt/gitlab/backups by default.
sudo gitlab-rake gitlab:backup:create STRATEGY=copy
2. Update GitLab
Update to the latest version of GitLab.
sudo yum install -y gitlab-ee
大版本更新先更新之前最高版本例如:
10.3.4更新到11.4.5需要先更新10版本最高的10.8.7更新后reconfigure,然后更新11.4.5,在reconfigure,restart
1 關閉部分gitlab服務
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl stop nginx
備份:
/opt/gitlab/bin/gitlab-rake gitlab:backup:create
crontab運行的定時備份
50 23 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
2 升級
rpm -Uvh gitlab-ce-10.0.4-ce.0.el7.x86_64.rpm
3 重新配置gitlab
gitlab-ctl reconfigure
4 重啟gitlab
gitlab-ctl restart