首页 > 编程知识 正文

gitlab安装配置,gitlab 搭建

时间:2023-05-03 14:26:41 阅读:158391 作者:2923

33558 www.Jian Shu.com/p/a22e aa1 fcfe 7

33558 www.Jian Shu.com/p/a22e aa1 fcfe 7

GitLab搭建以及配置

作者区域

作者tsyeyuanfeng关注用户按钮关注文章数据信息

2016.03.13 21:30字数1563阅读8645注释16喜欢52

如果是当前作者,请添加编辑按钮

文章的内容

一、系统环境

服务器:阿里巴巴云主机操作系统: centos 7.064位安装软件: nginx(80端口)、Apache (8080端口)、PHP-fpm (9000 )

GitLab分为社区版(GitLab Community Edition )和企业版(GitLab Enterprise Edition )。 社区版免费,企业版收费,但功能比社区版多。 根据当前的需求,选择安装社区版GitLab-CE。 编号:8.5.4 二、安装版本

我以前尝试过安装源代码,但是很辛苦。 这次选择官方提供的GitLab-CE Omnibus安装包。 GitLab官网有详细的安装步骤,根据自己的操作系统选择合适的版本,按照步骤操作即可。

https://about.git lab.com/downloads

三、安装方式

由于国内的AlibabaCloud (阿里巴巴云)主机无法连接到国外的GitLab Yum源码,只能直接从GitLab中文社区下载并安装rpm包。

curl-ljo https://mirror.tuna.Tsinghua.edu.cn/git la B- ce/yum/el7/git lab-ce-8.5.4-ce.0.el7.x86 _ x86

rpm-igitla B- ce-8.5.4-ce.0.el7.x86 _ 64.rpm

GitLab中文社区: http://www.gitlab.cc

四、安装过程

GitLab由以下服务组成:

nginx :静态Web服务器千兆位lab-shell :千兆位lab-work horse :轻量级反向代理服务器logrotate :日志文件管理工具,用于处理千兆位命令和修改授权密钥列表源side异步执行(unicorn ) anhttpserverforrackapplications,git lab rails APP应用程序托管在此服务器之上。 让我们重点谈谈gitlab-shell和gitlab-workhorse。

五、GitLab服务构成

GitLab shell有两个作用:处理Git lab的git命令和修改授权密钥列表。

通过SSH访问GitLab Server时,GitLab Shell将执行以下操作:

预定义的Git命令(git push、git pull、 git沉默的野狼) )调用GitLab Rails API检查权限执行预接收挂钩(GitLabenterpriseedition中称为git挂钩) )处理你请求的动作的git 使用我的post-receive操作http(s ) )如果您从Git仓库中提取了(pull )代码,Git lab rails APP应用程序将全面负责用户验证和git命令的执行。 如果您将(push )代码推送到Git仓库,Git lab rails APP应用程序将把以下任务交给git lab shell处理,而不验证用户或执行git命令:

调用GitLab Rails API检查权限执行预接收挂接(

中叫做Git钩子)执行你请求的动作处理GitLab的post-receive动作处理自定义的post-receive动作

也许你会奇怪在通过http(s)推送(push)代码的情况下,GitLab Rails应用为什么不在GitLab Shell之前进行鉴权。这是因为GitLab Rails应用没有解析git push命令的逻辑。好的方法是将这些解析代码放在一个地方,这个地方就是GitLab Shell,这样我们就可以在通过SSH进行访问时重用这段代码。实际上,GitLabShell在执行git push命令时根本不会进行权限检查,它是依赖于pre-receive钩子进行权限检查的。而qkdqt执行git pull命令时,权限检查是在命令执行之前的。对git pull命令的权限检查要简单得多,因为你只需要检查一个用户是否可以访问这个仓库就可以了(不需要检查分支权限)。

好吧,GitLab Shell这段话都是翻译官网的。链接在这里

https://gitlab.com/gitlab-org/gitlab-shell/blob/master/README.md

最后一段话有点拗口,我对此还是有一点问题的:既然你把git push的逻辑都放在GitLab Shell里面了,为什么不把git pull的逻辑也都放在里面提供重用呢?

猜想:git pull这段逻辑无法重用,因为通过http(s)方式访问时,要读取仓库的数据并且把这些数据封装成http包返回给客户端;而通过ssh方式访问时,仓库代码数据是通过ssh数据包返回的。两种访问方式返回数据的封装方式不一样,所以也没有必要提供重用。但是我觉得读取仓库数据这段逻辑应该还是重用了的。

GitLab Workhorse

GitLab Workhorse是一个敏捷的反向代理。它会处理一些大的HTTP请求,比如文件上传、文件下载、Git push/pull和Git包下载。其它请求会反向代理到GitLab Rails应用,即反向代理给后端的unicorn。官网对GitLab Workhorse的介绍在这里:https://gitlab.com/gitlab-org/gitlab-workhorse/

六、GitLab工作流程


GitLab工作流程图

七、配置

配置考量

要求能通过子域名git.zn2studio.com访问GitLab站点并且站点内的仓库地址也要用子域名显示。要求使用腾讯企业邮箱的SMTP服务器发送邮件。要求使用HTTP请求方式。要求能使用SSH连接方式。要求避免与已装软件的端口冲突要求使用系统已安装的Nginx服务器

配置过程

修改GitLab配置文件,停用GitLab内置Nginxnginx['enable'] = false使用系统已经安装的Nginx给gitlab-workhorse作反向代理因为unicorn的默认端口是8080,与系统已存在的Apache端口冲突,修改Apache端口为8000(也可以修改unicorn的端口)修改GitLab配置文件中的external_urlexternal_url 'http://git.zn2studio.com'修改这个配置会影响GitLab里面显示的仓库链接修改GitLab邮件服务配置,使用腾讯企业邮箱的SMTP服务器gitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = "smtp.exmail.qq.com"gitlab_rails['smtp_port'] = 25gitlab_rails['smtp_user_name'] = "xxx"gitlab_rails['smtp_password'] = "xxx"gitlab_rails['smtp_domain'] = "smtp.qq.com"gitlab_rails['smtp_authentication'] = 'plain'gitlab_rails['smtp_enable_starttls_auto'] = true

八、关于GitLab-CI

GitLab-CE 8.0以上的版本已经将GitLab-CI集成进了GitLab里面,并且是默认开启的。所以不需要像以前一样再单独安装GitLab-CI并且为GitLab-CI开启单独的Server。如下图所示:


GitLab-CI示意图

日常笔记

© 著作权归作者所有

举报文章

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。