这是一片关于GitLab的安装教程以及踩过的坑
浪费了一个下午的时间,终于把Gitlab搭建完成,搭建环境如下:
系统(虚拟机)
Distributor ID: Ubuntu
Description: Ubuntu 18.04 LTS
Release: 18.04
Codename: bionic
gitlab V11.0.1
安装Gitlab
这里有一个问题,gitlab官方源太慢了,一个gitlab安装包要500M+如果直接下载,很容易挂掉,或者等很久,所以这里要替换源。不过似乎在阿里云上搭载的话,会很快,不用更换。
这里推荐 清华大学开源软件镜像站 里面有不少的镜像源,其中就包括了gitlab的。
具体地址是
deb http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu bionic main
注意其中
bionic是系统代号,比如我的ubuntu 18 代号就是bionic其他的系统可以使用lsb_relase命令自行查询。
使用方法 参考
信任 GitLab 的 GPG 公钥:
1
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null设置源
1
2cd /etc/apt/sources.list.d
vim gitlab-ce.list编辑gitlab-ce.list 输入以下内容
1
deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/ bionic main更新并安装
1
2sudo apt-get update
sudo apt-get install gitlab-ce配置gitlab
由于gitlab要用到域名,所以需要准备好域名。由于我是用虚拟机搭建,所以公共域名用不了,所以我就自己搭建了一个域名服务。可以参考可选步骤,搭建私有DNS服务器。
配置文件是
/etc/gitlab/gitlab.rb文件,因为文件内容过多,就简单的把会用到的配置列出来域名,这个设计到了gitlab系统自动生成的链接,所以必须修改为自己的域名
1
2# external_url 'http://gitlab.explme.com'
external_url 'http://kirno.com'配置时区,由于默认是UTC,导致使用的时候时间不正确,所以需要修改为本地的时区
1
2# gitlab_rails['time_zone'] = 'UTC'
gitlab_rails['time_zone'] = 'Asia/Shanghai'邮件,由于gitlab会通过邮箱找回密码或者认证,所以需要配置。原本是使用系统自己的邮件系统,但是我不会配置,所以就是用了QQ邮箱作为发送方
1
2
3
4
5
6
7
8
9
10
11
12
13gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
# 发送方的邮箱完整地址 xx@qq.com
gitlab_rails['smtp_user_name'] = "XXX"
# 这里是发送方的QQ邮箱地址,也就是和上面的一样
gitlab_rails['gitlab_email_from'] = 'XXX'
# 密码,注意这里要使用QQ邮箱的 授权码 不是密码,可以在设置,账户处找到
gitlab_rails['smtp_password'] = "xxx"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
配置完成后初始化 gitlab 时间比较久
1 | |
可以通过以下命令测试邮件
1
2
3
4
# 进入控制台
gitlab-rails console
# 发送邮件
Notify.test_email("收件人邮箱", "标题", "内容").deliver_now
然后就可以在浏览器通过域名访问了
汉化教程
默认的gitlab是英文,可以选择进行汉化,不过其实汉化并不完整。
下载汉化文件 文件比较大在 48m+ 左右,而且下载比较慢,所以建议下载完拉上服务器。
一定要注意版本,已安装的gitlab版本可以通过
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION命令查看下载完之后解压,通过
cat gitlab/VERSION查看是版本是否匹配,如果版本不匹配可能会导致gitlab崩溃,所以小心停止gitlab
1 | |
- 覆盖
1 | |
- 重新配置gitlab并启动它
1 | |
使用现有的Nginx作为服务器
这个地方巨坑,真的是巨坑,被卡在这里太久了😭。
首先通过apt-get或者从官网下载的nginx,如果没有注意的话都不行,因为他们默认都不支持 Passenger 这是个巨坑啊,多少次因为这个摔鼠标了🖱️。虽然网上有教程通过 passenger-install-nginx-modules 的方式来重新安装nginx,但是这个的编译过程贼慢,我的双核4g云服务器完全卡死在这了,所以不推荐。还有的办法就是通过利用 nginx 1.9 以上的版本的动态模块加载功能来实现。
- 安装
ruby没办法,passenger依赖ruby
1 | |
- 安装
passenger安装这个东西最好换源,否则巨慢
1 | |
- 下载nginx源码,编译模块,参考
1 | |
- 配置现有的nginx的配置文件
nginx.conf, 添加
1 | |
- 重中之重,这里最坑,配置了好了
nginx之后报了一个奇葩🤮的错误
1 | |
这个地方浪费了我一个下午加半个早上🌞,多次想放弃,网上还找不到资料。其实解决也很简单,就是重启nginx,不能简单的nginx -s reload 或者 nginx -s reopen 的重启,没有效果的,必须要先 kill 了nginx的进程然后再重新运行 nginx 才行😭。为了解决这个问题,我重装了gitlab,各种百度,谷歌,差点就去看gitlab源码了😭。手抖重启ngxin后成功看到/tmp下创建passenger.xxx文件,太开心了。然后刷新页面果然成功
- 一定要记住配置
passenger_root /var/lib/gems/2.3.0/gems/passenger-5.3.3;否则也会出现403错误

(可选)搭建私有DNS服务器
网上基本都是 bind9 的教程,所以我也就使用它来搭建。
首先安装
1 | |
安装了之后,有几个路径需要了解
- /etc/bind 用于存放主要的配置文件
- /var/cache/bind 用于存放域名相关的配置文件
比如我要创建一个 kirno.com 的域名
首先编辑 /etc/bind/named.conf.local 文件
1 | |
然后把 /etc/bind 目录下的解析配置模板 db.local 复制到 /var/cache/bind 里面
1 | |
编辑 /var/cache/bind/db.kirno.com 把其中的
1 | |
改为
1 | |
其中
192.168.2.100是你想解析的域名对应着的ip
最后编辑 /etc/bind/named.conf.options 文件
1 | |
其中
223.5.5.5是阿里云的DNS,这里的意思其实是如果本地找不到相应的域名,就会交给第三方DNS服务器处理,所以改成任意的可使用的第三方域名服务器即可。