GitLab 搭建

这篇教程基本就是官方文档的翻译版(意译为主),因为中文 gitlab 配置文档没几个能看的,于是决定结合自己的踩坑经历亲自写个教程

一、开始之前

1. 考虑是否采用一键安装包

GitLab 提供了deb、rpm 打包的一键安装包,包含了 GitLab 所依赖的各个软件(比如 nginx、postgresql redis 等组件),下载地址以及相关文档:https://packages.gitlab.com/gitlab/gitlab-ce

对于线上生产环境来讲,当然不建议这样的傻瓜式配置,除非你想加班。。。

2. 选择需要的版本

如果对于每个版本的异同没什么特殊要求,就不用管了,直接选择最新的 stable 版就好了

3. 一些提示

1) 这篇教程是基于 debian/ubuntu 的,其他发行版有借鉴之处,只是出问题的概率会稍微多点罢了

2) 我们搭建的是生产系统(production),想搭建开发版本(development)的同学请去这里:https://gitlab.com/gitlab-org/gitlab-development-kit

3) 下面的步骤经测试是可行的;如果你偏离以下步骤,自求多福咯   :)

二、步骤预览

1. 基本软件依赖

2. Ruby

3. Go

4. 添加用户

5. 数据库

6. Redis

7. GitLab

8. Nginx

三、开始工作

1. 基本软件依赖

1) 基本开发工具

2) Kerberos

如果你都不知道这是什么鬼,那么你可以假设并不需要这东西

3) Git

要求 Git 版本 >= 2.7.4,如果官方源里面的git版本太旧,那么我们来自己编译吧

4) sendmail

        sendmail 是一个邮件代理程序,简单来说就是一个能往外发邮件的程序。我们将要安装的是 GitLab 推荐的 postfix,安装这个包之后就有sendmail 二进制程序可以用了

        需要补充的是,使用 sendmail 让服务器往外发邮件,需要对域名配置MX记录、TXT记录等,但是依然有很大的可能性被各种邮件服务器认为垃圾邮件,甚至拒收。
同时,如果服务器在“墙”内,那么发往 gmail 等邮箱就无能为力了。。。
所以,我们最终选择了不配置 sendmail,而通过 smtp 使用第三方的邮件服务

2. Ruby

GitLab 当前仅支持 Ruby 2.1.x ,暂时还未支持 2.2 和 2.3。(现在时间为:2016-04-08)

幸运的是,debian 8 官方源里的 ruby 版本为2.1.5,正好符合需求,不幸的同学可以参照下面的方法手动编译

下面顺便安装一下 Bundler Gem

 

3. Go

从 GitLab 8.0 以来,HTTP 请求由 gitlab-workhorse 处理。这是一个用 go 写的轻量级守护进程。所以我们需要安装 go 语言的编译器。
(原文档是编译安装的 1.5.3 版本,我们直接使用源里的 1.3.3 二进制包)

 

4. 添加用户

添加专门用于运行 GitLab 的用户:git

 

5. 数据库

官方推荐使用 PostgreSQL,但是也支持 Mysql,为了方便,就使用了服务器上面现有的 mysql
(这里我就不给出  PostgreSQL 的配置方式了,需要的同学请查看原文档,链接最后给出)

 

6. Redis

Redis 是一款著名的“Key-Value”存储型数据库,这里要求的最低版本为 Redis 2.8
(debian 8 以及 ubuntu 14.04 官方源的版本都满足要求,其他用户可以看这里:https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/redis.md

准备重启服务以及添加 git 用户至相应用户组

 

7. GitLab

下面涉及到各种配置,为了简化权限问题,全部在 git 用户下进行操作 (su - git 即可切换为 git 用户)

1) clone 源码

2)  各种配置

主配置文件

一堆文件以及目录权限设置

unicorn 以及 rack attack 配置

git 客户端配置

3) 数据库配置

redis 连接设置

Mysql 配置 (PostgreSQL 配置请见原文档)

 

4) 安装Gems

提示:下面 bundle install 的时候可以加上参数 -jN, N 为线程数,多线程并发执行,可以节省大量时间

5) 安装 GitLab Shell

默认情况下,gitlab-shell 的配置文件会根据你的 GitLab 主配置文件自动生成,下面我们修改该配置文件:

 

6) 安装 gitlab-workhorse

 

7) 初始化数据库 以及 激活高级特性

8) 安装启动脚本

不要忘了下面几条命令是需要root权限的

9) 配置日志轮转

 

10) 配置 SMTP 邮件服务

11) 检查程序状态 并 预编译资源文件

12) 启动服务

终于到这一步了。。。root 权限运行 service gitlab start 即可

8. Nginx

最后,我们需要让 Nginx 反向代理来对用户提供 GitLab 的 web 服务

 

四、最后的检查

1. Final check

在上述过程全都成功之后,我们可以检查一下 GitLab 的各个组件是否正常:

2. 日志查看

日志主要都在 gitlab/log 目录下面,比如 sidekiq.log 就保存了每次发邮件的信息。

 

五、额外的一些配置

1. 启用 HTTPS 支持

1) 修改 gitlab.yml,片段如下

2) 重新准备 Nginx 站点配置文件

3) 重启 Nginx 以及 GitLab

 

2. 使用 GitHub 登录以及项目导入功能

这里需要用到的东西叫做:OmniAuth

1) 在你的 GitHub 账户中添加OAuth Applications

官方文档:https://gitlab.com/help/integration/github.md

注意点:a. GitHub 添加应用的具体位置为: OAuth applications -> Developer applications

b. callback URL 填写您的站点URL,和文档中截图一样,而不是文档中说的:'${YOUR_DOMAIN}/import/github/callback'

2) 修改 gitlab.yml,片段如下:

3) 重启服务

 

参考资料

官方安装文档:https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/installation.md

ArchLinux Wiki:https://wiki.archlinux.org/index.php/Gitlab

《GitLab 搭建》有2个想法

    1. 哇,这文章很老了,后来我都是单独开一个虚拟机,然后 apt install 解决的。
      用docker的话,还得考虑持久化存储的数据库、文件系统,安全更新也不如apt源来的方便

发表评论

电子邮件地址不会被公开。 必填项已用*标注