从零开始搭建Gitlab服务器
温馨提示:这篇文章已超过615天没有更新,请注意相关的内容是否还可用!
从头开始构建 Gitlab 服务器
## Gitlab简介
最近感觉自己在不断的搭建/迁移版本服务器,现在市面上关于版本服务器搭建的攻略都是肤浅的,真正深入骨子里的很少,很多关键点往往都是笼统的而且很多关键点都没有提到。 版本服务器的搭建往往是初创公司或者中小型公司急需解决的问题。
> 目前市场上拥有良好用户和口碑的Git服务商屈指可数。 在国外,**`GitHub`**、**`BitBucket`**都是不错的选择,但国际形势变幻莫测,需要时刻有个梯子。 在国内,**`Coding`**的用户体验非常好,很符合码农的审美。 开源中国的**`码云`**也有相应的代码托管服务,但是自从他们的Maven仓库镜像发生下架事件后,不再建议再使用。 很快被阿里收购也不是没有可能。
每个版本管理软件都有自己的优点和缺点。 大多数企业和团队选择**`Gitlab`**作为目前市面上功能和体验非常强大的非开源代码管理平台,满足隐私需求。
> Gitlab目前有两个不同的版本centos搭建web服务器,Community/Personal和Enterprise
> GitLab 社区版完全免费。 不仅可以免费创建私人仓库,而且参与人数没有上限,参与人数没有限制。 您还可以设置成员权限,甚至可以细化到特定分支机构的权限,以及强大的工作流程等待。 完全满足我们日常开发生产所需的版本控制功能。
> Gitlab企业版支持LDAP架构及相应功能,以实现更高的处理性能和存储效率,并提供其他更多模块和服务支持
*参考链接*:【Gitlab社区版/企业版对比】(#compare)
## 安装前准备
目前Gitlab的release版本并不支持所有的Linux/Unix内核版本。 下面可能还是需要广大同学通过其开源代码进行编译安装。
> * Arch Linux
> * 软呢帽
> * FreeBSD
> * Gentoo
> * macOS
另外,storage/CPU/memory分别影响Gitlab能够支持的效率和性能指标。 为了防止开发者协同办公砸键盘,官方的硬件推荐可以结合公司和团队规模作为版本服务器硬件选择的重要参考。
### 中央处理器
根据CPU核心数,官方推荐大致分为以下几种:
> * 单核:可以支持100个左右的并发用户,但可能会有一点卡顿。 毕竟所有的前后台处理都需要这个吃苦耐劳的核心来完成。
> * 双核:500左右并发用户,也是官方推荐的最低配置
> * 4核:约2000个并发用户
> * 8核/16核:约5000/10000并发用户
> * 32核/64核:根据官方数据,核心数和用户数基本呈线性增长,但在实际使用中发现CPU和内存占用明显偏大,性能可以维持在官方性能的1/10 指标已经是不错的情况,所以应该存在一定的内存泄漏
### 记忆
官方推荐的内存最好不要低于4G,否则每次push和commit都会让你苦不堪言。 8G内存可以稳定支持1000个并发数,所以至少选择8G以上的内存来搭建你的版本服务器。
## Gitlab 安装
### 基本组成
我们以 CentOs 7.4 为例。 CentOs 7.x在防火墙等一系列组件上的安装配置与6.x略有不同。 请灵活搬砖。 总的来说,把Gitlab弄起来是完全正确的,大概包括以下操作和模块支持。 跳过部分步骤不代表安装成功,不代表操作步骤完全正确; 但是如果安装有问题,你可以回过头来详细查看这里所描述的,检查是否缺少一个基本的模块/组件支持或者忘记了一些配置项。
> * 基本操作系统 (CentOs 7.4) 和相应的包/依赖项
> *红宝石
> * 去
> * 系统用户或分配用户(建议单独分配)
> * 数据库(目前是 postgresql)
> * 雷迪斯
> * GitLab
> * 网络服务
> * 防火墙安装配置
### 不同的安装模式
#### 1.傻瓜模式/Omnibus自动变速器
GitLab官方提供Omnibus安装包进行安装centos搭建web服务器,其中集成了大部分的包(Nginx、ruby on rails、git、redis、postgresql等),让用户无需额外安装这些软件,减少大部分安装体积。
我们一般采用这种方式安装,但是自动挡带来的隐患和冲突会比较多。 尤其是如果之前的服务器不简单,分别安装了nginx、redis等组件,再以这种方式安装,会导致一系列的冲突和配置问题,比如反向代理配置异常、服务访问等,我们稍后有时间再谈这个。
*参考链接*:【Gitlab Omnibus安装包】()
#### 2.组件依赖模式/手动传输
##### 2.1 安装依赖包并配置postfix邮件服务
```
yum install curl openssh-server openssh-clients postfix > cronie
服务后缀开始
chkconfig 后缀
```
*centos7使用systemctl命令*
##### 2.2 安装指定版本发布包
```
*下载并安装gitlab的yum源*
卷曲-sS | 须藤庆典
*自动安装最新版本*
yum 安装 gitlab-ce
*安装指定版本*
gitlab-ce-11.2.3-ce.0.el7.x86_64
```
#### 3.纯手动模式/原装档位
当然,你也可以手动安装Gitlab需要的各种组件,结合其源码安装也可以达到同样的目的。 当然,目前官方已经不再推荐使用这种安装方式。 作为Geek,你可以尝试去获得成就感。 这一步繁琐复杂,一不小心就可能烧脑。
如果打算使用这种方式安装,可能需要做好多次失败的准备
*参考链接*:【Gitlab源码编译安装】()
## Gitlab常用命令
以上主要详细描述了Gitlab从选型到安装的基本配置过程,基本可以满足一个项目组协作平台的基本任务。 服务器管理。
### 1.运维管理
> 查看版本
```
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
```
> 实时查看日志
```
gitlab-ctl tail
```
> 数据库关系升级
```
gitlab-rake 数据库:迁移
```
> 清除 redis 缓存
```
gitlab-rake缓存:清除
```
> 升级 GitLab-ce 版本
```
yum 更新 gitlab-ce
```
> 升级到最新版本的 PostgreSQL
```
gitlab-ctl pg-升级
```
### 2.服务控制命令
> 启动/停止/重启所有 gitlab 组件:
```
gitlab-ctl 启动/停止/重启
```
> 启动指定模块组件:
```
gitlab-ctl 启动 redis/postgresql/gitlab-workhorse/logrotate/nginx/sidekiq/unicorn
```
> 停止指定的模块组件:
```
gitlab-ctl 停止模块名称
```
> 查看服务状态
```
gitlab-ctl状态
```
> 生成配置并启动服务
```
gitlab-ctl 重新配置
```
### 3.日志相关
> 实时查看所有日志
```
gitlab-ctl tail
```
> 各模块实时日志
```
gitlab-ctl tail redis/postgresql/gitlab-workhorse/logrotate/nginx/sidekiq/unicorn
```
## Gitlab 配置
以上三种方式无论是安装哪一种,Gitlab安装完成后,我们都可以直接通过`gitlab-ctl`命令启动gitlab服务。
### Gitlab服务组合
GitLab主要由以下服务组成,共同承担Gitlab的运营需求
> nginx:静态网络服务器
> gitlab-shell:用于处理Git命令和修改授权密钥列表
> gitlab-workhorse:轻量级反向代理服务器
> logrotate:日志文件管理工具
> postgresql:数据库
redis:缓存数据库
sidekiq:用于后台执行排队任务(异步执行)