手把手教你在centos7上安装GitLab服务器

GitLab介绍

GitLab:是一个基于Git实现的在线代码仓库托管软件,你可以用gitlab自己搭建一个类似于Github一样的系统,一般用于在企业、学校等内部网络搭建git私服。

功能:Gitlab 是一个提供代码托管、提交审核和问题跟踪的代码管理平台。对于软件工程质量管理非常重要。

版本:GitLab 分为社区版(CE) 和企业版(EE)。

配置:建议CPU2核,内存2G以上。

GitLab服务器的搭建

1、安装GitLab所需依赖

yum -y install policycoreutils openssh-server openssh-clients postfix

2、开放系统防火墙的HTTP和SSH访问

systemctl enable sshdsystemctl start sshdfirewall-cmd --permanent --add-service=httpsystemctl reload firewalld

3、设置postfix开机自启,并启动,postfix支持gitlab发信功能

systemctl enable postfix && systemctl start postfix

这步可能会出错,出错的内容可能如下

fatal: parameter inet_interfaces: no local interface found for ::1

此时需要修改/etc/postfix/main.cf

vim /etc/postfix/main.cf修改内容为如下inet_protocols = ipv4inet_interfaces = all

4、添加GitLab所需依赖库

vim /etc/yum.repos.d/gitlab_gitlab-ce.repo内容为:
[gitlab-ce]name=Gitlab CE Repositorybaseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/gpgcheck=0enabled=1

5、安装GitLab

yum makecacheyum install gitlab-ce

到这步gitlab已经安装完成,不过还不能使用。

6、修改gitlab配置文件指定服务器ip和自定义端口

vim  /etc/gitlab/gitlab.rb找到以下内容:external_url 'http://gitlab.example.com'修改为external_url 'http://地址为自己安装服务器ip或者域名'  
如果服务器上的80端口被占用则# nginx['listen_port'] = nil修改为  nginx['listen_port'] = 服务器没有被占用的端口,比如8099如果服务器上的8080端口被占用unicorn['port'] = 8080修改为unicorn['port'] = 服务器没有被占用的端口,比如8088,如果找不到unicorn['port'],可以先执行gitlab-ctl reconfigure

7、执行 gitlab-ctl reconfigure

注:6、7步骤的执行顺序可以颠倒,如果先执行7步骤,则还要修改

vim /var/opt/gitlab/nginx/conf/gitlab-http.conf

的内容,主要是改端口,如果端口已经被占用,和改访问的ip或者域名

如果在执行7步骤的时候,出现

Error executing action `create` on resource 'group[gitlab-www]'则看后边的错误提示内容,根据提示的错误内容进行操作即可。比如报错的内容可能是用户不存在,也有可能是cannot open /etc/group

8、gitlab发送邮件配置

以配置qq邮箱为例子

vim /etc/gitlab/gitlab.rb添加gitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = "smtp.qq.com"gitlab_rails['smtp_port'] = 465gitlab_rails['smtp_user_name'] = "你自己QQ号"  gitlab_rails['smtp_password'] = "QQ授权码"             gitlab_rails['smtp_domain'] = "smtp.qq.com"gitlab_rails['smtp_authentication'] = "login"gitlab_rails['smtp_enable_starttls_auto'] = truegitlab_rails['smtp_tls'] = truegitlab_rails['gitlab_email_from'] = '你自己QQ号'   

注:qq授权码获取如下

打开QQ邮箱-设置-账户-帐户安全-开启服务-POP3/SMTP服务-生成授权码-发个短信

配置完成后执行gitlab-ctl reconfigure 让配置生效

  • 测试邮箱

执行 gitlab-rails console进入控制台交互界面, 然后在控制台提示符后输入下面内容发送一封测试邮件,测试完成后exit()退出。

gitlab-rails console Notify.test_email('你要发送的邮箱', 'subjectqqq', 'content111').deliver_now

注:如果gitlab使用的nginx端口已经有修改过了,则还要进行如下配置,否则可能会出现访问gitlab相关的一些页面访问不到

 vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml把port: 80修改为port: gitlab使用nginx配置的端口号,比如8099然后执行gitlab-ctl restart

第一次访问页面,会进入修改root账号登录gitlab密码页面

在搭建过程中可能踩的坑

1、服务器修改过ssh端口的坑

解决方案:需要修改配置ssh端口

 vim /etc/gitlab/gitlab.rb gitlab_rails['gitlab_shell_ssh_port'] = 你服务器的ssh端口

2、访问gitlab主业出现502

有一定的概率是unicorn['port']被占用,可以通过gitlab-ctl tail unicorn 来跟踪unicorn的状态

gitlab汉化

注:汉化之前必须得先知道当前安装的gitlab版本,下载的汉化包必须和当前gitlab的版本一致,否则覆盖后汉化会不成功,甚至可能导致原有的gitlab瘫痪

查看当前gitlab版本

[root@localhost ~]$ cat /opt/gitlab/embedded/service/gitlab-rails/VERSION11.11.3

下载汉化包,访问https://gitlab.com/xhang/gitlab

选择和当前gitlab版本一致的汉化包,并按自己的喜好下载包,比如下载zip包

解压汉化包

[root@localhost ~]$  unzip gitlab-11-11-stable-zh.zip

查看汉化包版本

[root@localhost ~]$ cat gitlab-11-11-stable-zh/VERSION11.11.3

汉化前先进行备份,以便汉化失败后可以回滚

[root@localhost ~]$ cp -r /opt/gitlab/embedded/service/gitlab-rails{,.ori}

执行汉化

[root@localhost ~]$ cp -rf gitlab-11-11-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/

汉化的过程中控制台可能会打印如下内容

cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/log’ with directory ‘gitlab-11-11-stable-zh/log’cp: cannot overwrite non-directory ‘/opt/gitlab/embedded/service/gitlab-rails/tmp’ with directory ‘gitlab-11-11-stable-zh/tmp’

那是因为之前已经设置gitlab的root密码,所以可以忽略如上内容

重新配置gitlab并重启gitlab

gitlab-ctl reconfiguregitlab-ctl restart 

打开gitlab网页,验证是否汉化成功

GitLab常用命令

gitlab-ctl start # 启动所有 gitlab 组件;gitlab-ctl stop # 停止所有 gitlab 组件;gitlab-ctl restart # 重启所有 gitlab 组件;gitlab-ctl status # 查看服务状态;vim /etc/gitlab/gitlab.rb # 修改gitlab配置文件;gitlab-ctl reconfigure # 重新编译gitlab的配置;gitlab-rake gitlab:check SANITIZE=true --trace # 检查gitlab;gitlab-ctl tail # 查看日志;gitlab-ctl tail nginx/gitlab_access.log

常用目录

日志地址:/var/log/gitlab/ # 对应各服务的打印日志 服务地址:/var/opt/gitlab/ # 对应各服务的主目录

参考文档

Linux环境搭建GitLab服务器

https://www.jianshu.com/p/b04356e014fa

邮件配置

https://docs.gitlab.com/omnibus/settings/smtp.html

gitlab汉化

https://www.jianshu.com/p/2400d9e57fd1

原文发布于微信公众号 - Linyb极客之路(gh_c420b2cf6b47)

原文发表时间:2019-07-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券