公司现在开始实行 DevOps 的开发模式,代码托管采用了 GitLab 搭建私有代码仓库,本文记录了 GitLab 的安装、汉化及常见错误处理。
1. 安装GitLab
准备工作
sudo yum install curl policycoreutils openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
配置镜像源地址
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce
安装完毕后执行注册启动
sudo gitlab-ctl reconfigure
修改访问 IP 和 端口号
vim /etc/gitlab/gitlab.rb- 修改
external_url,比如http://localhost:9080
配置邮件发送服务
vim /etc/gitlab/gitlab.rb 修改与 email 有关的配置项
## 邮箱基础配置
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '237497819@qq.com'
gitlab_rails['gitlab_email_display_name'] = '237497819'
gitlab_rails['gitlab_email_reply_to'] = '237497819@qq.com'
gitlab_rails['gitlab_email_subject_suffix'] = ''
gitlab_rails['gitlab_default_can_create_group'] = true
gitlab_rails['gitlab_username_changing_enabled'] = true
## smtp 配置
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "237497819@qq.com"
gitlab_rails['smtp_password'] = "*********"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = false
gitlab_rails['smtp_openssl_verify_mode'] = 'none'
gitlab_rails['smtp_ca_path'] = "/etc/ssl/certs"
gitlab_rails['smtp_ca_file'] = "/etc/ssl/certs/ca-certificates.crt"
## 用户配置
user['git_user_email'] = "237497819@qq.com"
2. 汉化 GitLab
注意:汉化之前是必须设置root密码登录过的,否则有些必须文件没有生成,汉化不成功。
-
汉化包版本选择:version ≤ 8.8、version > 8.8
查看安装的 GitLab 的版本
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION 10.3.2 -
停止 GitLab 服务:
gitlab-ctl stop -
git clone https://gitlab.com/xhang/gitlab.git -
汉化操作:
cd gitlab yes|cp -rf ../gitlab/* /opt/gitlab/embedded/service/gitlab-rails/ -
重新启动查看效果:
gitlab-ctl start

3. 日常 GitLab 管理
gitlab-ctl start|stop|status|restart
4. 常见错误解决
在卸载 GitLab 然后再次安装执行 sudo gitlab-ctl reconfigure 的时候往往会出现:ruby_block[supervise_redis_sleep] action run,会一直卡无法往下进行。
- 按住
CTRL+C强制结束; - 运行:
sudo systemctl restart gitlab-runsvdir - 再次执行:
sudo gitlab-ctl reconfigure
gitlab-ctl reconfigure 之后,访问浏览器出现如下错误:Whoops, GitLab is taking too much time to respond.
-
使用
gitlab-ctl tail查看完整的gitlab-ctl reconfigure日志 -
我出现这个的错误是因为日志中出现了端口占用
==> /var/log/gitlab/unicorn/unicorn_stderr.log <== Errno::EADDRINUSE: Address already in use - bind(2) for 127.0.0.1:8080 -
vim /etc/gitlab/gitlab.rb去修改unicorn的 url 和 portunicorn['listen'] = '127.0.0.1' unicorn['port'] = 8888 -
再次执行:
sudo gitlab-ctl reconfigure -
有时也可能是超时引起的这个错误,
vim /etc/gitlab/gitlab.rb去修改webhook_timeout## unicorn 连接超时 unicorn['worker_timeout'] = 90 ## WebHook 超时时间 gitlab_rails['webhook_timeout'] = 60
5. 配置 push 操作时发送 diff 信息给指定人邮箱
-
创建用户的时候,邮箱保证正确。
-
User Settings —> Profile —> Main Settings —> email / public email 里是你的邮箱
-
User Settings —> Emails 保证第二步里显示的 email在这里是 verified 状态
-
User Settings —> Notifications 里 email保证正确,选择 level 为第一个,并勾选接收通知如下图

-
创建一个项目
-
Settings —> Integrations —> email on push,具体如下图

-
❤️enjoy it ~~