GitLab搭建以及配置

http://www.jianshu.com/p/a22eaa1fcfe7

http://www.jianshu.com/p/a22eaa1fcfe7



GitLab搭建以及配置

作者区域

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

2016.03.13 21:30 字数 1563 阅读 8645评论 16喜欢 52

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

文章内容

一、系统环境

  • 服务器:阿里云主机
  • 操作系统:Centos7.0 64位
  • 已装软件: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.gitlab.com/downloads

四、安装过程

由于国内阿里云主机无法连接国外的GitLab Yum源,所以只能从GitLab中文社区直接下载rpm包进行安装。

curl -LJO https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-8.5.4-ce.0.el7.x86_64.rpm

rpm -i gitlab-ce-8.5.4-ce.0.el7.x86_64.rpm

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

五、GitLab服务构成

GitLab由以下服务构成:

  • nginx:静态Web服务器
  • gitlab-shell:用于处理Git命令和修改authorized keys列表
  • gitlab-workhorse:轻量级的反向代理服务器
  • logrotate:日志文件管理工具
  • postgresql:数据库
  • redis:缓存数据库
  • sidekiq:用于在后台执行队列任务(异步执行)
  • unicorn:An HTTP server for Rack applications,GitLab Rails应用是托管在这个服务器上面的。

重点讲一下gitlab-shell和gitlab-workhorse。

Gitlab Shell

GitLab Shell有两个作用:为GitLab处理Git命令、修改authorized keys列表。

当通过SSH访问GitLab Server时,GitLab Shell会:

  1. 限制执行预定义好的Git命令(git push, git pull, git annex)
  2. 调用GitLab Rails API 检查权限
  3. 执行pre-receive钩子(在GitLab企业版中叫做Git钩子)
  4. 执行你请求的动作
  5. 处理GitLab的post-receive动作
  6. 处理自定义的post-receive动作

当通过http(s)访问GitLab Server时,工作流程取决于你是从Git仓库拉取(pull)代码还是向git仓库推送(push)代码。如果你是从Git仓库拉取(pull)代码,GitLab Rails应用会全权负责处理用户鉴权和执行Git命令的工作;如果你是向Git仓库推送(push)代码,GitLab Rails应用既不会进行用户鉴权也不会执行Git命令,它会把以下工作交由GitLab Shell进行处理:

  1. 调用GitLab Rails API 检查权限
  2. 执行pre-receive钩子(在GitLab企业版中叫做Git钩子)
  3. 执行你请求的动作
  4. 处理GitLab的post-receive动作
  5. 处理自定义的post-receive动作

也许你会奇怪在通过http(s)推送(push)代码的情况下,GitLab Rails应用为什么不在GitLab Shell之前进行鉴权。这是因为GitLab Rails应用没有解析git push命令的逻辑。好的方法是将这些解析代码放在一个地方,这个地方就是GitLab Shell,这样我们就可以在通过SSH进行访问时重用这段代码。实际上,GitLabShell在执行git push命令时根本不会进行权限检查,它是依赖于pre-receive钩子进行权限检查的。而当你执行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内置Nginx
  • nginx['enable'] = false
  • 使用系统已经安装的Nginx给gitlab-workhorse作反向代理
  • 因为unicorn的默认端口是8080,与系统已存在的Apache端口冲突,修改Apache端口为8000(也可以修改unicorn的端口)
  • 修改GitLab配置文件中的external_url
  • external_url 'http://git.zn2studio.com'
  • 修改这个配置会影响GitLab里面显示的仓库链接
  • 修改GitLab邮件服务配置,使用腾讯企业邮箱的SMTP服务器gitlab_rails['smtp_enable'] = true
  • gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
  • gitlab_rails['smtp_port'] = 25
  • gitlab_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示意图

日常笔记

© 著作权归作者所有

举报文章

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GitLab是一个开源的版本控制系统,提供了强大的代码托管和协作管理功能。虽然GitLab主要用于软件开发,但它也可以用来搭建博客。 搭建GitLab博客的步骤如下: 1. 安装GitLab:首先,需要在服务器上安装GitLab软件,可以根据具体的操作系统选择相应的安装方式。 2. 创建用户和项目:安装完成后,可以通过Web界面登录GitLab,创建博客所需的用户和项目。可以选择创建一个单独的项目作为博客仓库。 3. 编写博客:在项目中创建一个Markdown文件,用于编写博客内容。GitLab支持Markdown语法,可以方便地编辑和排版文本。 4. 提交和推送:完成博客内容的编写后,将文件提交到GitLab仓库中,并将代码推送到服务器上。 5. 配置域名和访问:在服务器上配置域名解析,并设置GitLab的域名指向服务器的IP地址。然后,就可以通过浏览器访问GitLab博客了。 6. 自定义主题:通过GitLab提供的自定义功能,可以对博客进行个性化主题的设置。可以选择现有的主题样式,或者自定义CSS文件来定制博客的外观。 7. 文章管理和发布:在博客中添加新的文章时,只需在对应的项目中创建Markdown文件并提交到仓库中即可。可以使用GitLab提供的分支和合并功能来管理不同版本的文章,并实现发布和修改的控制。 总之,通过搭建GitLab博客,可以享受到版本控制和协作管理带来的便利性,实现博客内容的编写、发布和管理。同时,GitLab还提供了许多其他功能,如评论、订阅和搜索等,可以进一步丰富和优化博客的功能和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值