版本管理工具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
安装Postfix来发送通知邮件,当然也可以使用其他SMTP服务器来发送邮件

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


我这里用7

我这里用第一种方法



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

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

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

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

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

默认会安装的组件:
- 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 /data
chmod /data/git-data
修改配置文件

修改后要运行如下命令:
gitlab-ctl reconfigure
gitlab-ctl restart
原来的目录有数据,那么你修改了存储位置还需要做如下操作

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


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


创建用户


添加用户到组

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


与Active Directory服务基础使用外部用户管理
微软的AD服务中使用的就是LDAP,当然使用Linux系统的LDAP也可以,只是微软的AD对于用户管理非常方便。我个人觉得不要迷恋开源非开源的也有很多好东西。
首先需要有一台活动目录服务器(安装略)
其次禁用GitLab的用户和组的管理

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

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

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

配置完运行
gitlab-ctl reconfigure
检查是否可以读取LDAP信息,运行
gitlab-rake gitlab:ldap:check

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

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

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

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


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


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

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

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



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

上面说的一些概念在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

https://docs.gitlab.com/omnibus/settings/logs.html
启用SSL
默认没有启用SSL,你需要启用SSL并提供证书文件,然后修改NGINX配置。我们这里建立一个自签名证书。

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

把这里改成https

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

更新配置
gitlab-ctl reconfigure
如果开启了防火墙需要新增下面的规则

再次登录

虽然是不信任但是已经应用了证书,实际工作中我们肯定是去公共的机构去申请证书。过程就是这样,我这里为了方便又禁用了SSL,因为不信任的证书很不方便。
版本管理工具Git(二)GitLab部署和配置的更多相关文章
- 版本管理工具Git(一)简要介绍
版本管理工具不但可以备份而且还能记录版本,也就是同一个东西不同时期的状态同时可以跟踪追溯.版本管理工具由CVS.SVN.Git.GitHub. 最早的版本管理工具CVS,因为多人开发项目导致工作很难协 ...
- 版本管理工具git与svn简介
版本管理工具 版本管理工具简介 常见版本管理工具 cvs(Concurrent Versions System) vss(Visual SourceSafe) svn 常用的版本管理工具 git 流行 ...
- linux系统下使用流行的版本管理工具 Git
前几天被版本管理困扰了好久,主要是因为 没法回到之前的版本,新版本又出了问题真的很尴尬. 终于决定使用目前网上很火的版本管理工具-------Git 历史啥的就不说了,说些有用的. 我用的是oschi ...
- 版本管理工具Git(1)带你认识git
简介 本篇将带领大家认识,git.github,让大家对git有基本的认识:下面将持续更新几篇文章来介绍git,见git导航: 下一篇中将讲解git的安装及使用: Git系列导航 版本管理工具Git( ...
- 版本管理工具Git(2)git的安装及使用
下载安装git 官方下载地址:https://git-scm.com/download/win 这里以windows为例,选择正确的版本: 验证是否安装成功,右键菜单中会出现如下菜单: Git工作流程 ...
- 版本管理工具Git(2)git的使用
上一篇带大家认识了Git,在本篇中将讲解Git的安装及使用: Git系列导航 版本管理工具Git(1)带你认识git 版本管理工具Git(2)git的安装及使用 版本管理工具Git(3)VS下如何使用 ...
- 版本管理工具Git(3)VS2013下如何使用git
Git系列导航 版本管理工具Git(1)带你认识git 版本管理工具Git(2)git的安装及使用 版本管理工具Git(3)VS下如何使用git VS下创建项目 vs中新建项目MyGitTest201 ...
- Studio之版本管理工具Git (图文教程)
目前业界主流的版本管理工具主要是 svn/git.svn是1种集中式的代码管理工具,而git是1种散布式的代码管理工具,广受极客的爱好.而基于git的github更是全宇宙码农的提高逼格,深究技术的必 ...
- 谈谈分布式版本管理工具Git
一.主流的版本管理工具 目前在企业中比较主流的版本管理工具有:GIT.SVN.CVS等等. 二.什么是Git? Git是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目.是 L ...
- 码农的好助手:版本管理工具git的使用
一.什么是github? GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub. GitHub 于 2008 年 4 月 10 日 ...
随机推荐
- scrapy 教程
pip install Scrapy 结果报错,那就一个一个安装吧 一.安装 1.pip install wheel 后面的都一样 pip install lxml pip install pyop ...
- Linux下安装、编译SDL
要搞图形界面,SDL是比较好上手的一个库.今天试着在centos下搞了一个SDL的程序.下面是配置的步骤: 首先yum search SDL,会出现SDL相关的软件包.不过我这里只有SDL1的,没有2 ...
- JSON对象与字符串间的转化
常用json间字符串与json对象的转化1.JSON对象转化问字符串 var obj = {name : "Geoff Lui",age : 26}; console.log(ob ...
- Analysis CDI
CDI是一组服务,它们一起使用,使开发人员可以轻松地在Web应用程序中使用企业bean和JavaServer Faces技术.CDI设计用于有状态对象,还有许多更广泛的用途,允许开发人员以松散耦合但类 ...
- Docker容器跨主机通信
默认情况下Docker容器需要跨主机通信两个主机节点都需要在同一个网段下,这时只要两个Docker容器的宿主机能相互通信并且该容器使用net网络模式,改实现方式为网桥模式通信: 除此之外我们还可以通过 ...
- (BUG记录)使用迭代器安全的删除处于循环下集合中的元素
今日在写一个功能时,需要从MQ拿取数据集合调用对端系统进行批量处理,为了幂等支持,在循环内部如果不满足调用条件就直接从集合中移除. 以上是一个典型的循环集合内删除的场景任务,工作一年第一次遇到这个场景 ...
- Linux shell 编程文件比较
文件比较允许你测试Linux 文件系统上文件和目录的状态 比较 描述 -d file 检查file是否存在并是一个目录 -e file 检查file是否存在 -f file 检查file是否存在并是 ...
- Django ORM 知识概要
相关命令 python3 manage.py makemigrations 根据模型生成相关迁移文件 python3 manage.py migrate 根据迁移文件,将表结构更新到数据库中,并在Dj ...
- 不会git的程序员,会不会被鄙视?
昨天一朋友在微信上问了我一个问题,我觉得很有趣,于是将本次聊天的内容分享给大家. 我朋友说,如果一个程序员不会使用 git,会不会被别人觉得低一个档次? 事先声明啊,这与公司技术栈无关,不要说有些公司 ...
- Python基础之变量作用域
一.分类: 二.变量名的查找规则: 三.局部变量: 四.全局变量: 五.global语句: 六.nonlocal语句: 七.基础代码: # 全局变量:当前.py文件内部都可访问 g01 = 100 d ...