一 安装gitlab

1 环境简介

官方相关介绍:

硬件要求 . 存储 必要的硬盘空间在很大程度上取决于您想要存储在GitLab中的存储库的大小,但根据经验,您应该至少拥有与您的所有存储库合并占用的空闲空间。 如果您希望将来灵活扩展硬盘空间,请考虑使用LVM进行安装,以便在需要时添加更多硬盘。 除了本地硬盘驱动器,您还可以安装支持网络文件系统(NFS)协议的卷。此卷可能位于文件服务器,网络连接存储(NAS)设备,存储区域网络(SAN)或Amazon Web Services(AWS)弹性块存储(EBS)卷上。 如果你有足够的RAM内存和最近的CPU,GitLab的速度主要受硬盘寻道时间的限制。快速驱动(7200 RPM及以上)或固态驱动器(SSD)将提高GitLab的响应能力。

. 中央处理器

• 1个核心最多支持100个用户,但由于所有工作和后台作业都在同一个核心上运行,因此应用程序可能会慢一点 • 2核是建议的核心数,最多支持500个用户 • 4个核心最多可支持2,000个用户 • 8个核心最多支持5,000个用户 • 16个内核最多可支持10,000个用户 • 32个核心最多可支持20,000个用户 • 64个内核最多可支持40,000个用户

. 内存

至少8GB可寻址内存来安装gitlab,在运行gitlab之前,至少需要4GB可用空间,

建议至少有2BG交换,建议将内核的swappiness 设置为较低水平10 足以 vim /etc/sysctl.conf vm.swappiness = 10

. 数据库

运行数据库服务器至少要有5-10GB的可存储空间,但具体要求取决于gitlab安装的大小

强烈支持使用postgresql

Mysql/mariadb(不支持所有的gitlab功能)

Postgresql 要求

从GitLab 10.0开始,需要PostgreSQL 9.6或更高版本,并且不支持早期版本。我们强烈建议用户使用PostgreSQL 9.6,因为这是用于开发和测试的PostgreSQL版本。 使用PostgreSQL的用户必须确保将pg_trgm扩展加载到每个GitLab数据库中。可以通过对每个数据库运行以下查询来启用此扩展(使用PostgreSQL超级用户): CREATE EXTENSION pg_trgm; 在某些系统上,您可能需要安装额外的软件包(例如 postgresql-contrib)以使此扩展可用。

. Gitlab geo 要求

如果您使用的是GitLab Geo,则跟踪数据库也需要postgres_fdw扩展名。 CREATE EXTENSION postgres_fdw;

. Unicorn

可以增加unicorn worker 的数量,有助于减少应用程序的响应时间并提高处理并行请求的能力

对于大多数情况,建议使用:CPU核心+1=unicorn worker

对于所有2GB及以上的机器,建议至少有3个,如果是1GB建议使用两个

. redis和 sidekiq Redis 存储所有用户会话和后台任务队列,redis的存储要求很低,每个用户大约25KB,sidekiq使用多线程进程处理后台作业,此过程从整个redis堆栈(200M+)开始,但由于内存泄露,他可能会随着时间的推移而增长,在非常活跃的服务器上,sidekiq进程可以使用1GB+内存

. Prometheus 及相关,使用默认设置,这些进程将消耗大概200M内存

2 安装相关依赖

yum install -y vim lrzsz wget gcc gcc-c++ make makeconf cmake

yum -y install readline readline-devel ncurses-devel gdbm-devel glibc-devel tcl-devel openssl-devel curl-devel expat-devel db4-devel byacc sqlite-devel libyaml libyaml-devel libffi libffi-devel libxml2 libxml2-devel libxslt libxslt-devel libicu libicu-devel system-config-firewall-tui redis sudo wget crontabs logwatch logrotate perl-Time-HiRes git cmake libcom_err-devel.i686 libcom_err-devel.x86_64 nodejs cmake libicu-devel libicu openssl openssl-devel

3 下载并配置yum源

curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash

4 安装软件

yum install gitlab-ce-11.0.6-ce.0.el7.x86_64

5 配置相关参数 URL 访问地址配置

6 配置访问相关解析

7 更新gitlab 配置

更新前需保证80端口未被占用,否则不能启动,因为其中的nginx代理默认启动的是80端口,若需更改,则需要在/etc/gitlab/gitlab.rb 中配置相关的nginx配置,切记,不能配置8080,因为8080已被gitlab内部配置默认占用unicorn master(此处也可改变),如果改成其他端口,则URL应写成server10.com:8060即可访问gitlab

查看是否成功 查看服务状态

8 登录和基本语言配置

登录修改root密码 通过root用户名和修改后的密码进行登录测试 设置环境为简体中文 保存并更新配置 查看

二 gitlab配置文件介绍及插件介绍

1 配置文件介绍

1 主配置文件介绍

其中包含所有的主配置的情况,组件的配置,其配置后需要进行reconfigure 进行生效配置并重启方可生效,其生效后的结果在各组件目录中可以看到

2 主目录

3 各个组件目录

4 放置日志文件

2 插件介绍

1 repository: 代码库,可以是硬盘或NFS文件系统 2 NGINX: web 入口 3 数据库:包含信息 Repository 中的数据(元数据,issue,合并请求merge request等) 可以登录的web用户信息 4 Redis 缓存 ,负责分发信息 5 sidekq: 后台任务,主要负责发送电子邮件,任务来自与redis 6 unicorn (gitlab rails):gitlab自身的web,包含了gitlab主进程,负责处理快速/一般任务,与redis一起工作,内容有 A 通过检查存储在redis中的用户来检查权限 B 为sidekiq 制作任务 C 从仓库(warehouse) 取东西或在哪里移动东西

7 gitlab-shell:用于SSH交互,而不是http,gitlab-shell 通过redis与sidekiq 进行通信,并直接通过TCP访问unicorn

8 gitaly: 后台服务,专门负责访问磁盘以高效处理git,并处理缓存耗时操作,所有的git操作都通过gitaly 进行处理

9 gitlab-workshorse: 反向代理服务器,可以处理与redis无关的请求,磁盘上的CSS,JS 文件等),处理git push/pull 请求,处理redis的链接(修改有redis发送的响应或发送给redis请求,管理redis的长期web socket链接)

10 mail_room: 处理邮件请求,恢复gitlab发送的邮件时,gitlab会调用此服务.

大体原理: gitlab 使用nginx将前端请求代理到UNicorn web 服务器,默认情况下,unicorn 与前端之间的通信是通过unix domain 套接字进行的,但也支持通过TCP请求转发,web访问前端/home/git/gitlab/pubilc绕过unicorn 服务来提供静态页面,上传和预编译资源,gitlab使用Unicorn web 提供网页和gitlab api,使用sidekiq作为作业队列, 反过来,它使用redis 作为作业信息,元数据和作业的非持久化数据后端。

gitlab应用程序使用mysql或postgresql 作为持久化数据库,保存用户,权限,issue其他元数据等。

通过http/https提供repository时,gitlab使用gitlab API 来解释授权和访问以及提供git对象。

gitlab-shell 通过ssh提供repository,他管理/home/git/,ssh/authorized_keys 内的SSH密钥,不应该手动编辑,gitlab-shell通过gitaly访问bare repository 已提供git对象并与redis 进行通信以向sidekiq提交作业以供gitlab处理,gitlab-shell 查询gitlab API一确定授权和访问。

3 gitlab 忘记密码

修改密码为"12345678"

三 配置邮件服务器

四 配置项目相关

1 创建用户组

2 创建项目(在指定的用户组中)

3 创建用户

4 用户加组

5 登陆用户

6 配置客户端

7 配置文件并上传

8 创建分支

9 保证master分支不能上传

五 gitlab 备份与恢复

1 通过配置文件进行备份配置

2 手动进行备份和恢复

1 进入gitlab备份目录并进行备份

命令:

gitlab-rake gitlab:backup:create

2 删除gitlab中的项目

3 关闭相应的服务

4 进行备份恢复

直接输入yes

5 进行配置并启动

6 查看是否恢复成功

7 配置定时任务进行定时备份

30 00 * * 5 /usr/bin/gitlab-rake gitlab:backup:create &> /dev/null && echo "gitlab 备份成功" | mail -s "gitlab 备份" 18829172841@163.com