团队环境:版本管理系统GitLab安装

2017-05-09 阅读: GitLab

版本控制系统是DevOps流程和持续交付流水线中关键的一环。 版本控制系统是研发团队开发环境的中心,开发人员和运维人员开发软件产品的代码、配置以及基础设施配置管理都要保存在其中。

我们选择在内网开发环境部署GitLab社区版作为团队的版本控制系统,一切皆代码,开发和运维人员将共同使用这个系统。

1.环境

  • CentOS 7.3 192.168.61.100
  • GitLab 9.1

2.安装GitLab CE

使用GitLab官方提供的GitLab-CE Omnibus安装包:

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

yum clean all
yum make cachefast
yum install gitlab-ce

3.初始化配置

在初始化和启动前根据服务器的具体情况做一些配置:

3.1 Git数据存储目录

配置Git数据存储目录,Git数据默认保存在/var/opt/gitlab/git-data中,可修改/etc/gitlab/gitlab.rb中的git_data_dir修改到别的路径下,例如这里修改到/home/git-data下:

mkdir -p /home/gitlab/git-data

修改/etc/gitlab/gitlab.rb

git_data_dirs({ "default" => { "path" => "/home/gitlab/git-data" } })

3.2 配置外部访问URL

/etc/gitlab/gitlab.rb

external_url "http://gitlab.example.com"

最好以域名的形式配置,如果没有可以配置IP

3.3 初始化配置和启动

初始化配置和启动GitLab:

gitlab-ctl reconfigure

在浏览器中访问:http://192.168.61.100,初次打开页面需要设置root用户密码,之后登录即可。

4.GitLab各组件

采用Omnibus package包并安装,GitLab各个组件全部自动安装完成。

我们主要关注以下组件:

  • nginx: 静态Web服务器
  • unicorn: GitLab应用服务器。
  • gitlab-workhorse: 轻量级反向代理服务器,主要用来处理一些大的HTTP请求,例如文件上传下载,git push pull等。其他的HTTP请求会反向代理给unicorn。
  • postgresql: 数据库
  • redis: 缓存
  • sidekiq:后台异步任务队列

对这些组件更多的定制配置可以参考这里 例如,数据库可以配置外部单独的PostgreSQL而不使用Omnibus GitLab包自带安装的。

5.服务的启动和停止

# 启动
gitlab-ctl start
 
# 停止
gitlab-ctl stop
 
# 重启
gitlab-ctl restart

备注:

  • 可以使用gitlab-rake gitlab:check命令检查安装状态,有问题的地方可以根据提示修复
  • 可以使用cat /opt/gitlab/embedded/service/gitlab-rails/VERSION查看安装的GitLab版本

## 6.gitlab常用配置

6.1 关闭注册

用管理员root账号登录之后, 进入Admin area, 点settings, 取消Signup enabled.

6.2 禁止普通用户创建Group

gitlab_rails['gitlab_default_can_create_group'] = false
gitlab-ctl reconfigure

6.3 通知邮箱配置

以163邮箱为例:

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 25
gitlab_rails['smtp_user_name'] = "xxx@163.com"
gitlab_rails['smtp_password'] = "xxxpwd"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = "xxx@163.com"
gitlab-ctl reconfigure

测试邮件发送:

gitlab-rails console
irb(main):001:0> Notify.test_email('xxx@xxx.com', '[GITLAB]TEST', 'MSG').deliver_now

7.认证集成LDAP

我们已经部署了一个OpenLDAP服务。 我们希望团队所有系统的账户都使用LDAP认证,使用统一帐户登录。

修改 /etc/gitlab/gitlab.rb文件,搜索ldap,去掉注释,并根据官方文档做出如下配置:

gitlab_rails['ldap_enabled'] = true
gitlab_rails['ldap_servers'] = YAML.load <<-'EOS' # remember to close this block with 'EOS' below
   main: # 'main' is the GitLab 'provider ID' of this LDAP server
     label: 'LDAP'
     host: '192.168.61.100'
     port: 389
     uid: 'uid'
     method: 'plain' # "tls" or "ssl" or "plain"
     bind_dn: 'cn=Manager,dc=frognew,dc=com'
     password: '{SSHA}krOGXDmiCdSXuXocOf10F96LJO5ijdXo'
     active_directory: true
     allow_username_or_email_login: true
     block_auto_created_users: false
     base: 'dc=frognew,dc=com'
     user_filter: ''
     attributes:
      username: ['uid', 'userid', 'sAMAccountName']
      email:    ['mail', 'email', 'userPrincipalName']
      name:       'cn'
      first_name: 'givenName'
      last_name:  'sn'
EOS

重新配置gitlab:

gitlab-ctl reconfigure

开启LDAP登录后,可以在Admin area, 点settings, 取消Signin enabled关闭普通的账号密码登录。 另外需要注意在关闭普通的账号密码登录之前需要设置一个LDAP用户为超级管理员。

8.备份

使用gitlab-rake gitlab:backup:create命令即可完成备份,默认的备份文件存放在/var/opt/gitlab/backups下。

通过修改/etc/gitlab/gitlab.rb来修改备份文件的默认存放目录:

gitlab_rails['backup_path'] = '/homme/backup/gitlab'

重新配置gitlab:

chown git /homme/backup/gitlab
gitlab-ctl reconfigure

9.监控

以Omnibus GitLab package形式安装的gitlab默认开启了Prometheus监控和其所需的Exporter。 具体可以参考这里GitLab Prometheus

可修改/etc/gitlab/gitlab.rb禁用gitlab内置的Prometheus:

prometheus_monitoring['enable'] = false
gitlab-ctl reconfigure

参考

标题:团队环境:版本管理系统GitLab安装
本文链接:https://blog.frognew.com/2017/05/install-gitlab-on-centos7.html
转载请注明出处。

目录