ubuntu 下搭建gitLab
-
安装所需依赖
sudo apt-get install curl openssh-server ca-certificates postfix
-
安装postfix的时候,需要进行一些选择,这里按默认选项(Internet Site),直接进行OK确认。然后填入自己的邮箱名,我这里填入localhost。
-
获取gitLab主程序
(1). 通过官网获取
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash sudo apt-get install gitlab-ce
(2). 由于官网速度慢,这里使用国内镜像
a. vim打开文件/etc/apt/sources.list.d/gitlab-ce.list,加入资源信息(注意写入权限)
deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main
b. 信任 GitLab 的 GPG 公钥:
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null
c. 更新资源
sudo apt-get update
-
安装 gitlab-ce
sudo apt-get install gitlab-ce
-
配置gitLab
sudo vim /etc/gitlab/gitlab.rb
修改external_url为自己的IP地址或域名,添加nginx配置external_url "https://gitlab.example.com"
-
启动gitLab服务
sudo gitlab-ctl reconfigure
-
502错误
a. 查看nginx错误日志,日志文件根据nginx配置确定
tail -f /var/log/gitlab/nginx/gitlab_error.log
b. 查看unicorn日志
sudo gitlab-ctl tail unicorn
比如我遇到的错误信息为:E, [2017-11-06T14:30:01.403991 #23461] ERROR -- : worker=1 PID:23747 timeout (70s > 60s), killing E, [2017-11-06T14:30:10.308742 #23461] ERROR -- : reaped #<Process::Status: pid 23747 SIGKILL (signal 9)> worker=1 E, [2017-11-06T14:30:10.805808 #23461] ERROR -- : worker=0 PID:23568 timeout (68s > 60s), killing
明显是超时导致,因此修改unicorn配置:
sudo vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
由于我的测试机只有2G内存,我又不想修改timeout 60
的默认参数,因此我修改了进程数,将默认的2 改为 1worker_processes 1
重启gitlab
sudo gitlab-ctl stop
sudo gitlab-ctl start
成功运行。这是临时测试方案,如果测试没问题就把unicorn配置写入/etc/gitlab/gitlab.rb
sudo vim /etc/gitlab/gitlab.rb
加入以下代码
unicorn['worker_processes'] = 1
重置gitlab配置
sudo gitlab-ctl reconfigure
-
禁用gitlab自带的nginx
a.sudo vim /etc/gitlab/gitlab.rb
加入以下代码:
nginx['enable'] = false
重置gitlab配置
sudo gitlab-ctl reconfigure
b. 配置原有nginx,创建新文件gitlab.conf
sudo vim /etc/nginx/sites-enabled/gitlab.conf
引入gitlab的nginx配置
include /var/opt/gitlab/nginx/conf/gitlab-http.conf;
测试nginx配置(注意用户身份)
/usr/sbin/nginx -t
如果有错误,就根据错误提示修改/var/opt/gitlab/nginx/conf/gitlab-http.conf
文件,没问题后重启nginx
/usr/sbin/nginx -s reload
-
测试邮件发送
进入控制台
gitlab-rails console
发送测试邮件
Notify.test_email('xxxx@test.com','gitlabTest','This is a test email from gitlab').deliver_now