版本管理工具Git(二)GitLab部署和配置 安装 配置

版本管理工具Git(二)GitLab部署和配置
安装
配置

版本管理工具Git(二)GitLab部署和配置
安装
配置

版本管理工具Git(二)GitLab部署和配置
安装
配置
# 安装依赖包
sudo yum install -y curl policycoreutils-python openssh-server
# 启用并启动SSHD
sudo systemctl enable sshd
sudo systemctl start sshd
# 在防火墙上永久允许HTTP,并重启防火墙
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
版本管理工具Git(二)GitLab部署和配置
安装
配置

安装Postfix来发送通知邮件,当然也可以使用其他SMTP服务器来发送邮件

 版本管理工具Git(二)GitLab部署和配置
安装
配置

下载GitLab的RPM包进行安装,下载地址 我这里下载的是CE版本,EE是企业版收费的。

版本管理工具Git(二)GitLab部署和配置
安装
配置

版本管理工具Git(二)GitLab部署和配置
安装
配置

我这里用7

版本管理工具Git(二)GitLab部署和配置
安装
配置

我这里用第一种方法

版本管理工具Git(二)GitLab部署和配置
安装
配置

版本管理工具Git(二)GitLab部署和配置
安装
配置

版本管理工具Git(二)GitLab部署和配置
安装
配置

修改/etc/gitlab/gitlab.rb配置文件

版本管理工具Git(二)GitLab部署和配置
安装
配置

另外把在DNS上配置这个域名指向这个IP,或者修改你自己机器的本地HOST文件。这里的配置是说外部访问GitLab通过哪个域名来访问。启动gitlab

版本管理工具Git(二)GitLab部署和配置
安装
配置

# 这个命令是对GitLab以及其包含的所有组件生效的,也就是重启、停止、启动和重新配置
# reconfigure 的意思是重新配置,每次修改配置文件后需要运行,然后运行restart
gitlab-ctl stop|start|restart|reconfigure
# 查看当前运行状态
gitlab-ctl status

版本管理工具Git(二)GitLab部署和配置
安装
配置

可以看到除了GitLab之外还有很多独立组件,这都是安装包一起安装的。这些独立组件也可以进行启动或者关闭。具体看官方文档

登录

版本管理工具Git(二)GitLab部署和配置
安装
配置

默认用户名是root,第一次登录需要重置密码

版本管理工具Git(二)GitLab部署和配置
安装
配置

默认会安装的组件:

  • Nginx 提供代理服务
  • Redis 存储用户登录会话,默认会话永不过期

配置

常用目录
/etc/gitlab/gitlab.rb 主配置文件
/var/log/gitlab/ 日志目录
/var/opt/gitlab/ 各个服务的主目录
/var/opt/gitlab/git-data/repositories GIT仓库数据目录

修改默认仓库数据存储位置

# 建立目录并修改目录权限
mkdir –p /data/git-data
chown git:root /data
chown git:root /data/git-data
chmod 700 /data
chmod 700 /data/git-data

修改配置文件

版本管理工具Git(二)GitLab部署和配置
安装
配置

修改后要运行如下命令:

gitlab-ctl reconfigure
gitlab-ctl restart

原来的目录有数据,那么你修改了存储位置还需要做如下操作

版本管理工具Git(二)GitLab部署和配置
安装
配置

主要就是把原来的数据移动过来,同时修复权限问题。如果是同一台机器可以使用cp –rp复制并保留权限。因为我们这里是新建的所以不存在这样的问题。我们建立一个项目看看数据会放到哪里?

版本管理工具Git(二)GitLab部署和配置
安装
配置

版本管理工具Git(二)GitLab部署和配置
安装
配置

用户和组的管理

默认情况下omnibus-gitlab管理用户和组,有些时候我们需要使用外部的系统来管理用户和组比如通过LDAP,成熟的产品有OpenLDAP以及微软的活动目录,如果我们要引入外部的用户和组的管理就需要禁用gitlab的用户管理功能。

自带用户管理功能

创建组

版本管理工具Git(二)GitLab部署和配置
安装
配置

版本管理工具Git(二)GitLab部署和配置
安装
配置

创建用户

版本管理工具Git(二)GitLab部署和配置
安装
配置

版本管理工具Git(二)GitLab部署和配置
安装
配置

添加用户到组

版本管理工具Git(二)GitLab部署和配置
安装
配置

这里要选择用户以及给予这个用户的项目角色,角色和权限相关,一般开发人员就使用【Developer】角色就行。

版本管理工具Git(二)GitLab部署和配置
安装
配置

版本管理工具Git(二)GitLab部署和配置
安装
配置

与Active Directory服务基础使用外部用户管理

微软的AD服务中使用的就是LDAP,当然使用Linux系统的LDAP也可以,只是微软的AD对于用户管理非常方便。我个人觉得不要迷恋开源非开源的也有很多好东西。

首先需要有一台活动目录服务器(安装略)
其次禁用GitLab的用户和组的管理

版本管理工具Git(二)GitLab部署和配置
安装
配置

配置与AD的LADP协议集成
活动目录结构是这样的,所有用户都在Company这个OU下面,在这个OU下面建立不同的OU。

版本管理工具Git(二)GitLab部署和配置
安装
配置

下面的配置是YAML格式的,格式一定要正确,否则会报错。

版本管理工具Git(二)GitLab部署和配置
安装
配置

下面还有一个Secondary,这个是GitLab企业版支持的功能也就是配置两个LDAP服务器,社区版只能用一个。

版本管理工具Git(二)GitLab部署和配置
安装
配置

配置完运行

gitlab-ctl reconfigure

检查是否可以读取LDAP信息,运行

gitlab-rake gitlab:ldap:check

版本管理工具Git(二)GitLab部署和配置
安装
配置

最后重启GitLab,再次打开登录页面

版本管理工具Git(二)GitLab部署和配置
安装
配置

输入用户名域账号wangtao和密码点击登录

版本管理工具Git(二)GitLab部署和配置
安装
配置

关于bind_dn的说明:这个是说你用哪个账号来绑定,如何查找账号请看下图。这个我这里用的是默认的域管理员,你可以用其他的只要权限够就可以。

版本管理工具Git(二)GitLab部署和配置
安装
配置

关于uid的说明:这里面有两种一个是cn;一个是sAMAccountName,有什么区别呢?如果你的域用户都是英文名称那用哪一个都一样,但是如果大部分人都是中文个别外国人是英文,那还是用sAMAccountName。我们来看看这2个名称是什么,通过AD编辑器查看对象属性。

版本管理工具Git(二)GitLab部署和配置
安装
配置

 版本管理工具Git(二)GitLab部署和配置
安装
配置

Cn是中文的,而sAMAccountName是英文的,再看下图AD用户和计算机中的用户属性,显示名是中文的,而登陆用的名称时英文的。所以你会看到如果是中文的这两个名字有区别,所以你要配置成sAMAccountName,否则你会无法登陆。

版本管理工具Git(二)GitLab部署和配置
安装
配置

版本管理工具Git(二)GitLab部署和配置
安装
配置

关于base的说明:这里是说从AD中的那个节点开始查找用户,当然你可以设置从AD的根上开始查找,但是这样没有意义,我这里就是设置从存放员工账号的节点开始查找。

 版本管理工具Git(二)GitLab部署和配置
安装
配置

关于allow_username_or_email_login的说明:含义是是否启用用户名或者邮件地址登陆,建议不启用。因为我们继承AD通常是使用userPrincipalName登陆,也就是下面红框里面的格式,它的确看起来是邮件地址的格式,但是如果allow_username_or_email_login禁用,那么GitLab会把整个输入当做用户名包括@,如果你启用这个选择,那么GitLab会截断@后面的,导致你使用userPrincipalName这种名称无法登陆。

版本管理工具Git(二)GitLab部署和配置
安装
配置

 其他配置说明:

  • active_directory:如果你的LDAP服务器是活动目录,那么就配置成true
  • timeout:查询LDAP服务的超时时长
  • block_auto_created_users:这个不太明白,官方文档说这个作用是严格控制GitLab安装中的活跃用户数量,启用该选项新用户则会被阻止,直到管理员处理。

禁用用户注册

既然通过AD管理用户那就没必要开启用户注册功能

版本管理工具Git(二)GitLab部署和配置
安装
配置

 版本管理工具Git(二)GitLab部署和配置
安装
配置

版本管理工具Git(二)GitLab部署和配置
安装
配置

再次打开页面就没有注册标签了

版本管理工具Git(二)GitLab部署和配置
安装
配置

上面说的一些概念在Linux的LDAP中也适用。

参考文档:

https://docs.gitlab.com/omnibus/settings/ldap.html 
https://docs.gitlab.com/ee/administration/auth/ldap.html

存储和目录管理

默认路径 权限 属组属主 作用
/var/opt/gitlab/git-data 0700 git:root 仓库目录
/var/opt/gitlab/git-data/repositories 2700 git:root Git仓库
/var/opt/gitlab/gitlab-rails/shared 0751 git:gitlab-www 大对象目录
/var/opt/gitlab/gitlab-rails/shared/artifacts 0700 git:root 持续集成目录
/var/opt/gitlab/gitlab-rails/shared/lfs-objects 0700 git:root LFS对象
/var/opt/gitlab/gitlab-rails/uploads 0700 git:root 用户上传附件目录
/var/opt/gitlab/gitlab-rails/shared/pages 0750 git:gitlab-www 用户站点页面
/var/opt/gitlab/gitlab-ci/builds 0700 git:root 持续集成构建日志路径
/var/opt/gitlab/.ssh 0700 git:root 验证KEYS

上面这些目录是在omnibus-gitlab包安装的时候自动建立的,有些目录会保存较大的数据,通常这些目录我们会单独挂载到一个分区中比如NFS或者其他地方。我们可以通过在配置文件中搜索路径来修改。 

日志查看

日志可以通过命令查看而不需要到日志目录中

# 查看所有日志
gitlab-ctl tail
# 查看NGINX的访问日志
gitlab-ctl tail nginx/gitlab_access.log 

版本管理工具Git(二)GitLab部署和配置
安装
配置

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

启用SSL

默认没有启用SSL,你需要启用SSL并提供证书文件,然后修改NGINX配置。我们这里建立一个自签名证书。

版本管理工具Git(二)GitLab部署和配置
安装
配置

建立证书目录并把证书拷贝过去

版本管理工具Git(二)GitLab部署和配置
安装
配置

把这里改成https

版本管理工具Git(二)GitLab部署和配置
安装
配置

配置证书路径,开启重定向。默认情况下如果你只修改了上面的,那么NGINX将不会监听80端口,这样你访问80端口的网站就失败,所以这里要开启重定向功能。

版本管理工具Git(二)GitLab部署和配置
安装
配置

更新配置

gitlab-ctl reconfigure

如果开启了防火墙需要新增下面的规则

版本管理工具Git(二)GitLab部署和配置
安装
配置

再次登录

版本管理工具Git(二)GitLab部署和配置
安装
配置

虽然是不信任但是已经应用了证书,实际工作中我们肯定是去公共的机构去申请证书。过程就是这样,我这里为了方便又禁用了SSL,因为不信任的证书很不方便。