gitlab 安装配置
gitlab 是开源的github,除了是git,还能用作code-review,并作为jenkins集成测试的关键环节。除了配置邮件,其它都挺简单,并且邮件发送错误,没有比较详细的日志,排查起来比较麻烦。
1 安装
我用的是linux,直接下载rpm包安装的。 rpm -ivh gitlab-ce-8.9.1-ce.1.el6.x86_64
一句话搞定。
gitlab 是一整套的包,包括redis,postgres,nginx等等,手动管理非常麻烦,可以通过gitlab-ctl管理。
2 配置
2.1 配置模板
配置的模板是 /opt/gitlab/etc/gitlab.rb.template
,复制到 /etc/gitlab/gitlab.rb
,配置都在这个文件里面。
2.2 需要关注的配置项
external_url
gitlab的uri前缀,例如http://git.example.com
git_data_dir
git的数据地址,例如/path-to-big-disk
unicorn['port']
ruby服务器的端口nginx['listen_port']
nginx服务器的端口,nginx服务器是ruby服务器的代理unicorn['worker_processes']
调整 gitlab-rails 的进程个数,减少可以节约内存
2.3 应用配置
gitlab-ctl reconfigure
应用配置,并重新启动。每次配置变更,重新运行这个命令即可,命令输出中包含了和之前配置的diff。
3 反向代理
如果配置了反向代理,例如nginx,务必配置 proxy_set_header Host $host;
另外需要设置允许的文件大小 client_max_body_size 50M;
4 邮件配置及问题诊断
4.1 配置
gitlab_rails['gitlab_email_enabled'] = true gitlab_rails['gitlab_email_from'] = 'admin@mail.example.com' gitlab_rails['gitlab_email_display_name'] = 'git' gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "mail.example.com" gitlab_rails['smtp_port'] = 25 gitlab_rails['smtp_user_name'] = "admin@mail.example.com" gitlab_rails['smtp_password'] = "password-of-admin" gitlab_rails['smtp_domain'] = "mail.example.com" gitlab_rails['smtp_authentication'] = "login"
4.2 问题诊断
核心是用 tcpdump
抓包, tcpdump -i any -nn -p tcp and port 25 -A -s0
观察输出
- 没有输出,说明gitlab没发邮件。检查配置对不对,例如
smtp_authentication
的值 Authentication unsuccessful
,说明密码没配置对Client does not have permissions to send as this sender
,gitlab_email_from
的配置可能必须和smtp_user_name
一样
只要有输出就好说,根据输出的内容Google就可以了。
5 启动
使用 gitlab-ctl restart
重启,可以解决很多问题,如果重启不行,就 ps -ef | grep gitlab
看看哪些进程没有被重启,手动kill掉,然后再重启。可以通过 gitlab-ctl tail
查看日志。