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。
参考文档:
- How to Install and Configure GitLab CE on CentOS 7
- How to Install and Configure GitLab on CentOS 7
- CentOS 7 搭建CA认证中心实现https取证
环境准备
首先安装GitLab依赖的相关软件。
1、软件安装yum -y install curl policycoreutils openssh-server openssh-clients postfix
2、postfix设置开机自启动
1 | systemctl start postfix |
安装GitLab
1、添加GitLab CE repositorycurl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
2、安装gitlabyum -y install gitlab-ce
软件642M,需要下载一会,耐心等待,安装完成会出现提示。
3、配置gitlab urlvim /etc/gitlab/gitlab.rb
,修改external_url为:
1 | external_url 'http://gitlab.voidking.com' |
使gitlab配置生效,gitlab-ctl reconfigure
。
但是,这个命令执行时间特别久,因此建议在安装的时候就指定external_url:EXTERNAL_URL="http://gitlab.voidking.com" yum -y install gitlab-ce
4、开放端口
1 | firewall-cmd --add-port=80/tcp --permanent |
5、测试访问
浏览器访问 http://192.169.56.103 ,即可跳转到gitlab登录页面。
重置密码之后,使用root用户登录,即可进行项目管理。
6、域名访问
修改本机host,添加:
1 | 192.168.56.103 gitlab.voidking.com |
然后就可以通过域名访问gitlab了,奇怪的是,域名哪怕不是设置成external_url中的url,也可以通过域名访问。
配置HTTPS加密访问
HTTPS(SSL/TLS)加密原理,参考文档《浅谈数据加密》。
自建CA并颁发证书
参考文档:
本节中,安装mkcert并使用它生成SSL证书。
1、安装nss-tools工具yum install nss-tools
2、下载二进制包wget -O mkcert https://github.com/FiloSottile/mkcert/releases/download/v1.3.0/mkcert-v1.3.0-linux-amd64
3、添加执行权限并移入bin
1 | chmod +x mkcert |
4、获取CA根目录mkcert -CAROOT
5、安装本地CAmkcert -install
,输出:
1 | Using the local CA at "/root/.local/share/mkcert" ✨ |
6、生成证书mkcert gitlab.voidking.com localhost 127.0.0.1
,输出:
1 | Using the local CA at "/root/.local/share/mkcert" ✨ |
7、创建证书目录并且移动证书
1 | mkdir -p /etc/gitlab/ssl/ |
生成DHPARAM
1、使用OpenSSL生成DHPARAM证书pem文件openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048
2、将证书文件的权限更改为600chmod 600 /etc/gitlab/ssl/dhparams.pem
使用
1、修改gitlab urlvim /etc/gitlab/gitlab.rb
,如下修改:
1 | external_url 'https://gitlab.voidking.com' |
2、重新配置gitlabgitlab-ctl reconfigure
3、测试访问
服务器上测试,curl localhost -L
,正常。
本地浏览器访问 https://gitlab.voidking.com/users/sign_in ,出现安全提示。
这是因为,这是因为浏览器不信任刚才自建的CA,解决办法是安装rootCA,更多内容参考https 以及内网如何使用。
4、下载rootCA.pem
从/root/.local/share/mkcert
目录中下载rootCA.pem到本地。
5、Chrome添加证书
设置,高级设置,管理证书,导入,选择rootCA.pem,证书存储选择受信任的根证书颁发机构,完成,出现警告点确定。重启Chrome,再次访问就没有警告了。
6、Firefox添加证书
选项,隐私与安全,证书,查看证书,导入,选择rootCA.pem。重启Firefox,再次访问就没有警告了。
7、创建项目
Create a Project,Project name填入voidking,选择Public,勾选Initialize repository with a README。
8、clone项目
1 | git config --global http.sslVerify false |
9、上传代码
1 |
|
查看项目,代码已经上传成功。
错误排查
关闭服务器之后重启,发现无法访问gitlab服务。
1、关闭防火墙
1 | systemctl stop firewalld |
关闭防火墙之后,依然无法访问。
2、查看服务和端口
1 | ps aux | grep nginx |
没有找到nginx服务,说明nginx出了问题。gitlab-ctl restart nginx
,无效,80端口依然没有监听。
3、查看gitlab日志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,但是改回来应该就可以了。改回原文件名,问题解决。
后记
至此,局域网的gitlab安装配置完成,可以正常使用了。
在公网环境下,配置更加简单,gitlab.rb中配置证书颁发机构颁发的SSL证书即可。