一个计算机技术爱好者与学习者

0%

好好学GitLab:CentOS7安装配置GitLab

1. GitLab简介

GitLab是GitLab公司开发的基于Rails的开源存储库管理器。它是一个基于Web的git存储库管理器,允许团队协作编写、测试和部署应用程序。GitLab提供了多种功能,包括wiki、问题跟踪、代码审查和活动源。GitLab Inc提供5种产品:

  • Gitlab CE(社区版):自托管和免费,社区论坛的支持。
  • Gitlab EE(企业版):自托管和付费,附带其他功能。
  • Gitlab JH(企业级中国发行版):极狐,自托管和付费,附带其他功能。
  • GitLab.com:SaaS和免费。
  • GitLab.io:由GitLab Inc.管理的私有GitLab实例。

在本文中,我们将在具有2GB RAM的CentOS7服务器上逐步安装GitLab CE(Community Edition),服务器IP为192.168.56.103。

参考文档:

2. 环境准备

首先安装GitLab依赖的相关软件。

1、软件安装

1
yum -y install curl policycoreutils openssh-server openssh-clients postfix

2、postfix设置开机自启动

1
2
3
systemctl start postfix
systemctl enable postfix
systemctl status postfix

3. 安装GitLab

1、添加GitLab CE repository

1
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

2、安装gitlab

1
yum -y install gitlab-ce

软件642M,需要下载一会,耐心等待,安装完成会出现提示。

3、配置gitlab url

1
vim /etc/gitlab/gitlab.rb

修改external_url为:

1
external_url 'http://gitlab.voidking.com'

这个配置的作用,当用户在gitlab项目页面点击Clone时,展示出的URL为 http://gitlab.voidking.com/<group>/<project>.git

4、使gitlab配置生效

1
gitlab-ctl reconfigure

但是,这个命令执行时间特别久,因此建议在安装的时候就指定external_url:

1
EXTERNAL_URL="http://gitlab.voidking.com" yum -y install gitlab-ce

5、开放端口

1
2
3
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=443/tcp --permanent
systemctl reload firewalld

6、测试访问
已知gitlab主机IP为 192.169.56.103 ,浏览器访问 http://192.169.56.103 ,即可跳转到gitlab登录页面。

首次登录会提示重新修改密码。修改密码之后,使用 root 用户登录,即可进入 dashboard 管理页面。

4. 通过域名访问GitLab

4.1. 单机配置hosts

修改同一局域网内某台设备的 /etc/hosts,添加:

1
192.168.56.103  gitlab.voidking.com

然后,这台设备就可以通过域名 http://gitlab.voidking.com 访问gitlab服务了。

4.2. 本地DNS配置域名解析

本地DNS配置域名解析:gitlab.voidking.com -> 192.168.56.103
然后,同一局域网内所有使用本地DNS的设备就可以通过域名 http://gitlab.voidking.com 访问gitlab服务了。

5. 使用GitLab

1、创建项目
Create a Project,Project name填入voidking,选择Public,勾选Initialize repository with a README。

2、clone项目

1
2
git config --global http.sslVerify false
git clone https://gitlab.voidking.com/root/voidking.git

3、上传代码

1
2
3
4
# 添加test.txt文件
git add .
git commit -m "add new file"
git push

查看项目,代码已经上传成功。

6. 配置HTTPS访问GitLab

6.1. 生成域名证书和DHPARAM证书

参考文档《好好学Linux:Linux中安装使用mkcert签发域名证书》,生成 gitlab.voidking.com 域名的域名证书,并生成一个DHPARAM证书。

6.2. 使用域名证书和DHPARAM证书

1、创建证书目录并且移动证书

1
2
3
mkdir -p /etc/gitlab/ssl/
mv gitlab.voidking.com* /etc/gitlab/ssl/
mv dhparams.pem /etc/gitlab/ssl/

2、修改gitlab url

1
vim /etc/gitlab/gitlab.rb

如下修改:

1
2
3
4
5
external_url 'https://gitlab.voidking.com'
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.voidking.com+2.pem"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.voidking.com+2-key.pem"
nginx['ssl_dhparam'] = "/etc/gitlab/ssl/dhparams.pem"

3、重新配置gitlab

1
gitlab-ctl reconfigure

4、测试访问
服务器上测试,curl localhost -L,正常。
本地浏览器访问 https://gitlab.voidking.com/users/sign_in ,出现安全提示。

这是因为浏览器不信任刚才自建的CA,解决办法是安装rootCA,安装方法参考文档《好好学Linux:Linux中安装使用mkcert签发域名证书》
安装rootCA后,就没有安全警告了。

7. 错误排查

关闭服务器之后重启,发现无法访问gitlab服务。
1、关闭防火墙

1
2
systemctl stop firewalld
systemctl disable firewalld

关闭防火墙之后,依然无法访问。

2、查看服务和端口

1
2
ps aux | grep nginx
netstat -nlpt | grep 80

没有找到nginx服务,说明nginx出了问题。

1
gitlab-ctl restart nginx

无效,80端口依然没有监听。

3、查看gitlab日志

1
gitlab-ctl tail

这次定位到了问题,缺少pem文件。

1
2019-08-06_09:26:08.31983 nginx: [emerg] BIO_new_file("/etc/gitlab/ssl/gitlab.voidking.com+2.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/gitlab/ssl/gitlab.voidking.com+2.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file)

查看/etc/gitlab/ssl/目录,发现gitlab.voidking.com+2.pem变成了gitlab.voidking.com+3.pem!虽然不知道为什么2变成了3,但是改回来应该就可以了。改回原文件名,问题解决。

8. 后记

至此,局域网的gitlab安装配置完成,可以正常使用了。

在公网环境下,HTTPS的配置更加简单,gitlab.rb 中配置证书颁发机构颁发的SSL证书即可。