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