Gitlab版本库配置

一、GitLab安装

1.1 准备工作
#拉取运行镜像
yum -y install docker
docker pull gitlab/gitlab-ce:13.5.2-ce.0

#创建数据目录
mkdir -p /data/docker/gitlab
1.2 运行服务
sudo docker run --detach \
--hostname gitlab.example.com \
--publish 10443:443 \
--publish 11110:80 \
--publish 10022:22 \
--name gitlab \
--restart always \
--volume /data/docker/gitlab/config:/etc/gitlab \
--volume /data/docker/gitlab/logs:/var/log/gitlab \
--volume /data/docker/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:13.5.2-ce.0
docker logs -f gitlab    #启动完成后在浏览器访问即可,默认是HTTP访问;

二、GitLab迁移

2.1 迁移说明
#GitLab的数据迁移要求是同版本的Gitlab上进行
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
2.2 数据备份
#在旧Gitlab上执行如下命令,在/var/opt/gitlab/backups目录生成迁移文件
gitlab-rake gitlab:backup:create
2.3 数据恢复
#在新的GitLab节点上停止相关数据连接服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

#将迁移文件放新gitlab的/var/opt/gitlab/backups目录下
#执行如下命令进行迁移恢复,编号是迁移文件的名字
gitlab-rake gitlab:backup:restore BACKUP=1612406834_2021_02_03_13.5.2

#按照提示输入两次yes后完成迁移,重启服务即可
gitlab-ctl restart

三、GitLab安全

3.1 基本要求
1.关闭登录页用户注册功能;
2.使用HTTPS替代HTTP访问;
3.2 安全访问
#创建好证书目录,以上述容器部署的为例
mkdir /data/docker/gitlab/config/ssl

#准备好加密证书,如果没有的话就自建一个
cd /data/docker/gitlab/config/ssl/
openssl genrsa -out server.key 1024
openssl genrsa -out private.key 1024
openssl req -new -key private.key -out cert_req.csr
openssl x509 -req -days 365 -in cert_req.csr -signkey private.key -out server_cert.crt

#备份现有配置文件
cp /data/docker/gitlab/config/gitlab.rb /data/docker/gitlab/config/gitlab.rb.bak

#修改gitlab配置参数
vim /data/docker/gitlab/config/gitlab.rb
#
external_url 'https://127.0.0.1'
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate']= "/etc/gitlab/ssl/server_cert.crt"
nginx['ssl_certificate_key']= "/etc/gitlab/ssl/private.key"

#重新更新配置,然后重启服务即可
gitlab-ctl reconfigure
gitlab-ctl restart
3.2 关闭注册

使用管理员账号登录到gitlab,进行如下操作 :


点击保存,退出到登录页面查看效果 :


四、Git报错

使用Git拉取GitLab仓库代码时,报如下错误 :

fatal: unable to access 'https://github.com/xxxxx/xxxx.git/': SSL certificate problem: unable to get local issuer certificate

只要设置跳过SSL证书验证就可以了,使用如下命令解决 :

git config --global http.sslVerify false