Linux---(CentOS 7.0)在线搭建GitLab及使用(全面又详细)
在Linux中在线搭建GitLab及使用,简单易懂
零.初识GitLab
Gitlab
由GitLab Inc.利用Ruby on Rails开发的一个开源的版本管理系统,实现一个自托管的Git项目仓库,具有wiki和issue跟踪功能,可通过Web界面进行访问公开的或者私人项目。
Github地址:https://github.com/gitlabhq/gitlabhq
官方网站:https://gitlab.com/
官方文档:https://docs.gitlab.com/
Gitlab特点:
拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。
Gitlab与其他DevOps工具的对比:https://about.gitlab.com/devops-tools/
- 可见性:保持流畅,不用等待同步,管理项目而不是工具,缩短周期时间
- 高效性:无需等待即可协作,同时工作,没有更多的交接
- 安全治理性:简化用户管理,加快审计,内置监控系统
Gitlab(Github)和Git区别
Git是版本控制系统
Github是在线的基于Git的代码托管服务
GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,可通过Web界面进行访问公开的或者私人项目
一.环境准备
0. 前提
官方建议服务器至少4GB的可用内存(2G运存的服务器也不要怕,下面有解决办法)
Linux其他发行版本的搭建可以参考官方安装文档:https://about.gitlab.com/install/
强烈推荐使用xshell远程连接linux服务器。
下面开始进入正题
1.下载wget及GitLab
如果没用wget,则执行:
yum install -y vim
yum install -y wget
进入指定目录,下载GitLab(可在官网自行选择版本,这里选用的是gitlab-ce-12.6.0-ce.0.el7.x86_64.rpm):
cd /usr/local
wget https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-12.6.0-ce.0.el7.x86_64.rpm/download.rpm
2.关闭防火墙
CentOS 7.0默认使用的是firewall作为防火墙
下面的命令只是暂时关闭防火墙(重启服务器之后防火墙会再次开启)
systemctl stop firewalld.service
另外,关于CentOS 7.0防火墙问题,这里写的很详细
https://blog.csdn.net/TTTZZZTTTZZZ/article/details/81483204
二.部署GitLab
1.安装GitLab的依赖项
# yum -y install policycoreutils openssh-server openssh-clients postfix cronie policycoreutils-python
2.启动postfix,并设置为开机启动
(在CentOS 7.0之前的版本与此版本命令有所不同)
systemctl start postfix.service
systemctl enable postfix.service
3.安装rpm包
cd /usr/local
rpm -ivh download.rpm
修改配置文件gitlab.rb
vim /etc/gitlab/gitlab.rb
注:GitLab默认会占用80、8080和9090端口,如果这些端口对你没影响可以忽略这一步
这一步将会修改GitLab的默认端口为11000、11001和11002
快速查找: 先按ctrl+c
退出编辑状态,接着按/+关键字
可以进行关键字搜索,例如/user
就是查找包含user关键字的字段,要继续查找此关键字,按字符 n
就可以继续查找了
修改为external_url 'http://<你的服务器地址或域名>:11000'
,external_url
是Gitlab的启动地址
将# unicorn['port'] = 8080
修改为unicorn['port'] = 11001
,
unicorn
是ruby的http server
将#prometheus['listen_address'] = 'localhost:9090'
修改为prometheus['listen_address'] = 'localhost:11002'
prometheus
是Gitlab的监控系统
(这里如果找不到#prometheus['listen_address'] = 'localhost:9090'
,就找Define to enable GitLabPages
,改为如图所示)
修改完保存退出。
因为修改了配置文件,故需要重新加载配置内容:
gitlab-ctl reconfigure
成功的状态图:
如果在加载中出现红字或没有出现如上图所示的代码,就说明失败了,很有可能是因为服务器内存不够,上面讲到过,官方建议服务器至少4GB的可用内存 。(解决方案在最后)
如果没有报错请继续执行启动命令,报错则看下面的解决方案:
gitlab-ctl start
如果开启防火墙端口号无法访问,可执行下面的代码开放端口号:
firewall-cmd --zone=public --add-port=80/tcp --permanent
查看已经开放的端口:
firewall-cmd --list-ports
三.浏览器访问及使用
- 0.浏览器访问 http://ip地址:11000
- 1.如果访问出现502,则有可能是端口号被占用或内存不够导致的
- 2.首先注册,登陆
- 3.创建组及创建项目都比较简单,按照提示进行就可以了(部分浏览器可以右键进行页面翻译)
- 4.将别人邀请进自己的组中,操作如下图所示(下面提交项目里有详细的过程)
- 5.浏览器提交项目到GitLab
使用浏览器访问GitLab在线提交项目:
https://blog.csdn.net/Amourtani/article/details/103721666
GitLab 部署及管理员账号初始化:
https://blog.csdn.net/hnmpf/article/details/80518460
到这里搭建及使用就结束了,下面是上面遗留的 内存不够的解决方案。
四.重新加载配置,内存不够解决方案
在解决之前应该是未启动的状态
停止gitlab的命令:
gitlab-ctl stop
1.修改GitLab配置文件/etc/gitlab/gitlab.rb
- 减少进程数,修改
worker_processes
:
unicorn['worker_processes'] = 2
#默认是被注释掉的,官方建议该值是CPU核心数加一,可以提高服务器的响应速度,如果内存只有4G,或者服务器上有其它业务,就不要改了,以免内存不足。另外,这个参数最小值是2,设为1,服务器可能会卡死 - 减少数据库缓存
postgresql['shared_buffers'] = "256MB"
默认为256MB,可适当改小 - 减少数据库并发数
postgresql['max_worker_processes'] = 8
默认为8,可适当改小 - 减少sidekiq并发数
sidekiq['concurrency'] = 25
默认是25,可适当改小
2.启用Swap分区
- 创建 swap 分区(这里需要等待几秒)命令:
dd if=/dev/zero of=/data/swap bs=512 count=8388616
注意:创建swap大小为bs*count=4294971392(4G),/data/swap目录若无则找/mnt/swap
- 通过mkswap命令将上面新建出的文件做成swap分区:
mkswap /data/swap
- 查看内核参数vm.swappiness中的数值是否为0,如果为0则根据实际需要调整成60
查看参数:
cat /proc/sys/vm/swappiness
设置参数:
sysctl -w vm.swappiness=60
- 启用 swap 分区
swapon /data/swap
echo “/data/swap swap swap defaults 0 0” >> /etc/fstab
- 再次使用cat /proc/swaps 查看swap分区是否启动
cat /proc/swaps
- 最后重启配置生效:
gitlab-ctl reconfigure
gitlab-ctl start
最后,汉化的方法并没有找到比较好的,以后找到再进行补充。