gitlab 配置要点
gitlab 是个不错的开源套件,它提供了一套自建私有的类 github 服务的一站式解决方案。
和我之前介绍过的 gitolite 不同, gitlab 提供了清晰完善的前后台操作界面,管理上更加容易。
另外,如果有更进一步的 Code Review 需求,应该尝试 gerrit 。
gitlab 有相当丰富的文档,因此我这里仅记录一些配置中需要注意的点。
下载和安装
强烈建议使用 gitlab 提供的 Omnibus 安装方式,在一台干净的服务器上独立部署 gitlab。注意服务器配置应该至少 2 核 CPU + 4GB 内存 ,如果采用云服务器,建议也使用云硬盘,这样能够更方便地进行扩容,同时兼顾容灾需求。
gitlab 的官方源在国内访问速度比较慢。建议使用 Gitlab 中文社区 提供的 源 ,这个源托管在 清华大学 服务器。
安装并没有什么较难的地方,按照官方文档走完流程,然后启动服务即可。Omnibus 方式安装的路径为 /opt/gitlab
。
中文化
gitlab 并没有提供语言包,因此要使用补丁的方式进行中文化。gitlab 上的用户 xhang 进行了该工作,感谢他的辛苦努力。
中文化的流程如下(复制自 xhang 的介绍,有简化):
确认当前版本。
1sudo cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
我的版本是 9.3.6
,查看汉化版本库是否包含 v9.3.6-zh
这个 tag 。若包含,就进行下面的流程。否则,你可以需要升级自己的 gitlab 到相应的版本。
1# 克隆汉化版本库
2git clone https://gitlab.com/xhang/gitlab.git
3# 如果已经克隆过,则进行更新
4git fetch
然后比较汉化标签和原标签,导出 patch 用的 diff 文件。
1# 导出9.3.6 版本的汉化补丁
2git diff v9.0.0 v9.3.6-zh > ../9.3.6-zh.diff
接下来应用补丁:
1# 停止 gitlab
2sudo gitlab-ctl stop
3sudo patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < 9.0.0-zh.diff
确定没有 .rej
文件,启动 GitLab 即可。
1sudo gitlab-ctl start
执行重新配置命令
1sudo gitlab-ctl reconfigure
邮件配置
如果不想折腾 Postfix 的话,可以直接配置一个 SMTP 服务器。我尝试过使用腾讯企业邮箱的 smtp 服务器,但是每封邮件发出时都会被腾讯邮件系统认为是滥用,要求输入验证码才可以发信。我想应该是腾讯邮箱并不欢迎这样使用他们的服务器。最终我购买了 阿里云的邮件推送服务 ,每天免费 200 封,这也够用了。
时区
默认时区为 UTC,因此显示的时间和本地时间相隔了8小时。可以参照 Changing your time zone 进行配置。对于中国使用的东八区时间,可以采用下面的值,任选一个均可:
1Beijing
2Asia/Shanghai
3Choneqing
4Asia/Chongqing
5Hong Kong
6Asia/Hong_Kong
更多的取值可以参考 TimeZone 。
使用子 URL
有时我们希望使用类似与 http://sample.com/gitlab/
这样的 URL 来提供 gitlab 服务。gitlab 也提供了一个这样的试验性的功能。我尝试了一下,挺好用:
Configuring a relative URL for Gitlab
修改仓库地址
通过设置多个仓库地址,gitlab 可以将仓库分散到多个存储空间中,在 Repository storage paths 中有详细说明。
使用非绑定的 nginx
gitlab 自带了一个 nginx 服务器提供 web 服务。如果你的 gitlab 服务器还要进行其他工作,那么可能你已经自行在服务器安装了 nginx 。在这种情况下,你可能希望使用自己安装的 nginx 代替 gitlab 自带的 nginx 。这篇文章做了说明:
Using a non-bundled web-server
我也碰到了这样的情况,有一台服务器除了运行 gitlab ,还需要提供简单的 http 静态服务。但我采用了一个更简单的方案: 让 gitlab 自带的 nginx 监听 8000 端口,主 nginx 做一个代理转发:
1location ^~ /gitlab {
2 proxy_pass http://localhost:8000;
3}
查看错误
gitlab 提供了 Logs 工具帮助查看实时 log,例如使用下面的命令就能查看 gitlab 所有子系统的试试 log。
1sudo gitlab-ctl tail
如果你的 gitlab 无法工作,不妨先看看 log 再说。
我在一台已经安装了 nginx 的服务器上部署 gitlab 后,发现无法访问管理界面,查看 log 后发现 80 端口冲突,很快就解决了问题。
GIT LFS 提交报错
gitlab 支持 git-lfs ,并且默认在新项目中开启。在推送使用了 git-lfs 的项目时,我碰到了这样的错误:
HTTP 413 错误的意思是负载过大,需要调整默认的 nginx 参数 client_max_body_size 。如果你使用的是我上面提到的采用 proxy_pass 实现两个 nginx 同时工作的方法,那么两个 nginx 的参数都需要调整。
- 文章ID:2648
- 原文作者:zrong
- 原文链接:https://blog.zengrong.net/post/gitlab-configure/
- 版权声明:本作品采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可,非商业转载请注明出处(原文作者,原文链接),商业转载请联系作者获得授权。