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

摘要:
首先需要有一台活动目录服务器(安装略)其次禁用GitLab的用户和组的管理配置与AD的LADP协议集成活动目录结构是这样的,所有用户都在Company这个OU下面,在这个OU下面建立不同的OU。下面还有一个Secondary,这个是GitLab企业版支持的功能也就是配置两个LDAP服务器,社区版只能用一个。
安装

版本管理工具Git(二)GitLab部署和配置第1张

版本管理工具Git(二)GitLab部署和配置第2张

# 安装依赖包
sudo yum install -y curl policycoreutils-python openssh-server
# 启用并启动SSHD
sudosystemctl enable sshd
sudosystemctl start sshd
# 在防火墙上永久允许HTTP,并重启防火墙
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld

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

版本管理工具Git(二)GitLab部署和配置第3张

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

版本管理工具Git(二)GitLab部署和配置第4张

版本管理工具Git(二)GitLab部署和配置第5张

我这里用7

版本管理工具Git(二)GitLab部署和配置第6张

我这里用第一种方法

版本管理工具Git(二)GitLab部署和配置第7张

版本管理工具Git(二)GitLab部署和配置第8张

版本管理工具Git(二)GitLab部署和配置第9张

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

版本管理工具Git(二)GitLab部署和配置第10张

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

版本管理工具Git(二)GitLab部署和配置第11张

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

版本管理工具Git(二)GitLab部署和配置第12张

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

登录

版本管理工具Git(二)GitLab部署和配置第13张

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

版本管理工具Git(二)GitLab部署和配置第14张

默认会安装的组件:

  • Nginx 提供代理服务
  • Redis 存储用户登录会话,默认会话永不过期
配置
常用目录
/etc/gitlab/gitlab.rb主配置文件
/var/log/gitlab/日志目录
/var/opt/gitlab/各个服务的主目录
/var/opt/gitlab/git-data/repositoriesGIT仓库数据目录

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

# 建立目录并修改目录权限
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部署和配置第15张

修改后要运行如下命令:

gitlab-ctl reconfigure
gitlab-ctl restart

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

版本管理工具Git(二)GitLab部署和配置第16张

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

版本管理工具Git(二)GitLab部署和配置第17张

版本管理工具Git(二)GitLab部署和配置第18张

用户和组的管理

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

自带用户管理功能

创建组

版本管理工具Git(二)GitLab部署和配置第19张

版本管理工具Git(二)GitLab部署和配置第20张

创建用户

版本管理工具Git(二)GitLab部署和配置第21张

版本管理工具Git(二)GitLab部署和配置第22张

添加用户到组

版本管理工具Git(二)GitLab部署和配置第23张

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

版本管理工具Git(二)GitLab部署和配置第24张

版本管理工具Git(二)GitLab部署和配置第25张

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

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

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

版本管理工具Git(二)GitLab部署和配置第26张

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

版本管理工具Git(二)GitLab部署和配置第27张

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

版本管理工具Git(二)GitLab部署和配置第28张

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

版本管理工具Git(二)GitLab部署和配置第29张

配置完运行

gitlab-ctl reconfigure

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

gitlab-rake gitlab:ldap:check

版本管理工具Git(二)GitLab部署和配置第30张

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

版本管理工具Git(二)GitLab部署和配置第31张

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

版本管理工具Git(二)GitLab部署和配置第32张

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

版本管理工具Git(二)GitLab部署和配置第33张

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

版本管理工具Git(二)GitLab部署和配置第34张

版本管理工具Git(二)GitLab部署和配置第35张

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

版本管理工具Git(二)GitLab部署和配置第36张

版本管理工具Git(二)GitLab部署和配置第37张

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

版本管理工具Git(二)GitLab部署和配置第38张

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

版本管理工具Git(二)GitLab部署和配置第39张

其他配置说明:

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

禁用用户注册

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

版本管理工具Git(二)GitLab部署和配置第40张

版本管理工具Git(二)GitLab部署和配置第41张

版本管理工具Git(二)GitLab部署和配置第42张

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

版本管理工具Git(二)GitLab部署和配置第43张

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

参考文档:

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

存储和目录管理

默认路径权限属组属主作用
/var/opt/gitlab/git-data0700git:root仓库目录
/var/opt/gitlab/git-data/repositories2700git:rootGit仓库
/var/opt/gitlab/gitlab-rails/shared0751git:gitlab-www大对象目录
/var/opt/gitlab/gitlab-rails/shared/artifacts0700git:root持续集成目录
/var/opt/gitlab/gitlab-rails/shared/lfs-objects0700git:rootLFS对象
/var/opt/gitlab/gitlab-rails/uploads0700git:root用户上传附件目录
/var/opt/gitlab/gitlab-rails/shared/pages0750git:gitlab-www用户站点页面
/var/opt/gitlab/gitlab-ci/builds0700git:root持续集成构建日志路径
/var/opt/gitlab/.ssh0700git:root验证KEYS

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

日志查看

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

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

版本管理工具Git(二)GitLab部署和配置第44张

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

启用SSL

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

版本管理工具Git(二)GitLab部署和配置第45张

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

版本管理工具Git(二)GitLab部署和配置第46张

把这里改成https

版本管理工具Git(二)GitLab部署和配置第47张

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

版本管理工具Git(二)GitLab部署和配置第48张

更新配置

gitlab-ctl reconfigure

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

版本管理工具Git(二)GitLab部署和配置第49张

再次登录

版本管理工具Git(二)GitLab部署和配置第50张

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

免责声明:文章转载自《版本管理工具Git(二)GitLab部署和配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇1.1.3 以Self Host方式寄宿Web APIpython -第七节课之加密操作之md5加密和base64类型下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用Git,从码云上clone项目到本地,修改完之后提交

最近在写公司的项目,用的比较多的就是使用Git,从码云上clone下来项目,到修改完之后,再提交项目到码云上去,这样的方法很适用于团队协作,以及避免电脑里的代码,因为特殊情况而丢失。所以把这个过程简单的分享一下!欢迎大家讨论。 闲话少说,开始进入正题。 一、把项目从码云上clone下来。(这里以一个自己的简单分支做演示)1.先简单创建一个临时演示的项目。(...

[转]Maven多模块结构下版本管理的正确姿势-revision

转自: Maven多模块结构下版本管理的正确姿势(CI Friendly Versions) - ${revision} 在使用Maven多模块结构工程时,配置版本是一个比较头疼的事。继承版本,依赖版本,自身版本,都需要单独定义,很是麻烦。但其实Maven已经提供了这种CI版本的管理方式,下面来介绍具体用法。 从Maven 3.5.0-beta-1版本开始...

git合并代码到dev用法

git 将dev分支的代码合并到master  一、在dev分支上运行以下命令   1. git add . // 暂存所有更改   2. git commit -m "更改的备注信息" // 将修改 提交到本地仓库,双引号内是提交的备注信息   3. git pull origin dev // 拉取远程dev分支代码   4. git push or...

pod 私有 pod 库创建和使用

1、创建私有的 pod 仓库,就像 GitHub 这样的仓库一样,大家都把代码托管到这个里面。 - 1、在自己公司的 git 服务器或者其他平台的 git 服务器上创建私有远程仓库,我是用公司的 git 服务器,名字叫 MySpecs ,克隆地址为:https://XXX/XXX/XXX/MySpecs.git - 2、将私有的远程仓库copy到本地。 p...

git 的安装以及使用:是一个开源的分布式版本控制系统,可以对项目进行版本管理。 早期是linux之父用来管理linux系统源代码的(linux是和windows一样操作系统 开源免费的操作

## 总结 - 学会使用基本的git命令 管理源代码- 学会去github创建仓库 并将代码上传到github的仓库 (有待完成 回家有网再push)- 了解本地的.git和服务器github的.git的关系 是两个仓库 一个是本地 一个是服务器 需要使用一句命令来关联 git remote add origin 远端的.git的地址- 了解github的...

svn 删除、移动和改名

删除、移动和改名 Subversion allows renaming and moving of files and folders. So there are menu entries for delete and rename in the TortoiseSVN submenu. 图4.33.版本控制文件的菜单浏览 正在删除文件/文件夹...