GitLab服务器搭建

标签: Git 分类: 软件 创建时间:2019-12-23 03:02:22 更新时间:2025-01-17 10:39:22

1.概述

搭建与使用过微软的AzureDevops之后,我还尝试了Jenkins,现在准备尝试GitLab。AzureDevops三个月的试用期,之后就要收费了,价格也是很高的。Jenkins虽然功能非常的强大,而且免费,但是操作起来还是有些麻烦,特别是下载安装插件,我都不知道我自己那里有问题,而且,明明设置了清华的镜像,还是下载很慢,暂时就搁置了。最后,是GitLab,最近刚刚听说,也准备要上手了。
GitLab分为社区版和企业版,推荐安装企业版,即使不想花钱,但是依然可以在企业版的基础上使用社区版的功能,如果哪一天想要贡献点力量或者企业做大了,稍微花点钱买服务,也不是不用费什么事,直接就申请开通企业账户就行了,省事。

我一直想找到官方网站的安装指导,在首页上点击try gitlab free,结果总会跳到注册登录页面

最后是在Resources条目下找到GitLab Installation的,我打开的方式不对。

参考文章:
【1】.gitlab 社区版或企业版 的区别
【2】.GitLab 搭建自己的私有 GitHub
【3】.Install GitLab Runner on Windows
【4】.Manually Downloading and Installing a GitLab Package
【5】.关于极狐GitLab版本说明 GitLab 有三个版本:企业版(EE)、社区版(CE)和极狐版(JH),极狐GitLab(JH)是建立在社区版之上的企业级中国发行版,在此基础上增加了额外的特性和功能。
【6】.2024 年适合 DevOps 团队的 5 款最佳 CI/CD 工具 1.Bitbucket;2.Bamboo;3.Jira Software;4.Confluence;5.Bitbucket Pipelines

2.安装依赖

1
2
3
4
5
6
7
8
9
sudo yum install -y curl policycoreutils-python openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd

## 以下命令按需执行,像我firewall-cm --status查看防火墙状态,直接关闭了。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld

3.安装邮件服务器

根据自己的需求,是否安装邮件服务器,可以发送邮件通知给个人。

1
2
3
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix

4.添加GitLab仓库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

# 2024年09月07日
curl -fsSL https://get.gitlab.cn | sudo /bin/bash

# 编辑repo文件
vi /etc/yum.repos.d/gitlab-jh.repo

# 输入以下内容
[gitlab-jh]
name=JiHu GitLab
baseurl=https://packages.gitlab.cn/repository/el/8/
gpgcheck=1
gpgkey=https://packages.gitlab.cn/repository/raw/gpg/public.gpg.key
priority=1
enabled=1
参考文章:
【1】.GitLab服务器IP地址设置
【2】.Gitlab 服务器url修改后,项目path的修改
【3】.学习笔记:记录UOS Server V20 1070e安装极狐GitLab过程 UOS不能用以上办法配置,需要手工配置yum源。和Centos一样,UOS的e版本也是用yum工具安装软件包的,在/etc/yum.repo.d/目录中创建gitlab-jh.repo文件

5.安装

1
EXTERNAL_URL="http://192.168.1.60" yum install -y gitlab-ee

没有问题的化,结果安装成功。

如果yum安装不成功的话,可能需要 手工下载 安装,GitLab EE 仓库,可以选择自己需要的版本。

6.系统配置

(1) 安装成功后,就可以在浏览器中输入EXTERNAL_URL中填入的url地址,进入系统了。 Use the default account’s username root to login.使用默认的账户root进行登录,他会让你修改密码,你可以直接输入新的密码,确认就可以了。

(2) 设置了root用户的密码之后,就可以直接使用用户名root和刚刚设置的密码进行登录了。

(3) 创建用户
这些简单的操作其实也没必要花费经历去做了,自己摸索,看看界面都会的吧。

上面这张图是我已经使用管理员账户登入系统,并创建了一个用户和一个项目之后的控制面板,如果是一个刚安装的gitlab,首页不是长这样的。

(4) 端口配置
gitlab的配置文件在:/etc/gitlab/gitlab.rb,

1
2
3
4
5
6
7
8
9
10
11
12
# 为服务器对外的地址或域
external_url="http://192.168.1.8:10007"

## Advanced settings
# unicorn['listen'] = '127.0.0.1'
# unicorn['port'] = 8082

# 后来不知道怎么回事,上面的配置失效了,也找不到这个 unicorn 配置了,只能找nginx这个配置了。
nginx['listen_port'] = 10007

# 修改后使用,命令重新加载配置。
gitlab-ctl reconfigure

(5)获取登陆密码

1
2
3
4
5
# Linux安装包方式:
sudo cat /etc/gitlab/initial_root_password

# Docker Engine安装方式:
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

(6)修改git ssh端口
默认的gitlab ssh端口是22,但是如果直接使用的话,会出现问题,特别是修改了服务器的ssh端口号:ssh: connect to host 192.168.1.8 port 22: Connection refused。修改了/etc/gitlab/gitlab.rb中的

1
gitlab_rails['gitlab_shell_ssh_port']= 10014

修改仓库地址:

1
git remote add gitlab ssh://git@192.168.1.8:10014/zjhjkj/drone-cloud.git
参考文章:
【1】.gitlab 修改访问端口 nginx[‘listen_port’] = 8000
【2】.CentOS7.9安装gitlab最新版本,并修改端口配置邮件-记录一下 nginx[‘listen_port’] = 8081
【3】.linux安装gitlab并修改gitlab默认端口号 这里提到了 unicorn[‘port’],但是我好像没有找到
【4】.Changing unicorn port in /etc/gitlab/gitlab.rb does not work
【5】.gitlab修改ssh端口 这里是修改 gitlab 的ssh端口
【6】.git 如何指定ssh端口 这里修改了 ~/.ssh/config 配置文件
【7】.git拉取和推送如何指定远程服务器的ssh端口 git remote set-url origin ssh://git@11.22.33.44:9999/home/git/work.git
【8】.gitlab修改ssh端口 这里修改了端口号,给了截图
【9】.从 Unicorn 切换到 Puma 从 13.0 版本开始,Puma 是默认的 Web 服务器,并且 Unicorn 已被禁用。 在 14.0 版本中,Unicorn 已从 Linux 包中删除,不再受支持
【10】.软件包默认值 除非在 /etc/gitlab/gitlab.rb 文件中指定配置,软件包将采用如下所述的默认值

7.编辑CI/CD

使用GitLab有一点不好的地方,就是如果要创建管道,也就是使用pipeline,需要自己手动写一些任务和阶段,而像AzureDevops发扬了其一贯的作风,虽然也提供了yml方式的配置文件,但是也提供了可视化配置页面。

GitLab提供持续集成服务。如果添加一个.gitlab-ci.yml文件到项目根目录,并配置GitLab项目使用某个Runner,然后每一次提交或者是推送都会触发CI pipeline.

8.其他操作

可以在命令行中直接输入:gitlab-ctl命令,可以查询基本的命令有哪些。

1
2
3
4
5
6
## 启动
gitlab-ctl start
## 重启
gitlab-ctl restart
## 停止
gitlab-ctl stop

9.卸载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
## 停止
sudo gitlab-ctl stop
## 卸载
sudo rpm -e gitlab-ce
## 查看进程
ps -aux | grep gitlab
## 杀死进程
kill -9 进程id
## 删除文件
find / -name gitlab|xargs rm -rf

## 删除gitlab-ctl uninstall时自动在root下备份的配置文件
rm -rf /root/gitlab-cleanse

## 删除用户(gitlab安装时会自动创建用户git,根据情况是否要删除)
userdel -r git
参考文章:
1.彻底完美卸载Gitlab

问题

1.获取 GPG 密钥失败

[Errno 12] Timeout on https://packages.gitlab.com/gitlab/gitlab-ee/gpgkey: (28, ‘Resolving timed out after 30547 milliseconds’)

也没有解决,只是又重新执行了:yum install,把程序安装了一遍,结果问题就解决了。

2.ssh连接很慢GSS failure解决办法

编辑/etc/ssh/ssh_config,找到:GSSAPIAuthentication no 这一行,去掉前面的#符号。(不起作用)

3.git clone 报错:git-upload-pack: command not found

(1) 查找gitlab安装的git目录

1
find / -name git

然后设置软连接:

1
ln -s /opt/gitlab/embedded/libexec/git-core/git/git-upload-pack /usr/bin/git-upload-pack

4.安装时卡住

卸载了gitlab之后,安装时总是卡在这里。

(1) 第一次尝试

1
2
3
4
5
rm -f /var/lib/rpm/__db*
rpm -vv --rebuilddb

yum clean all
yum update

(2) 第二次找到了一篇文章参考文章3,介绍的方法

1、没关系上趟厕所多等一会(10分钟)
2、按住CTRL+C强制结束
3、运行:sudo systemctl restart gitlab-runsvdir
4、再次执行:sudo gitlab-ctl reconfigure

好像出现了错误:STDERR: sysctl: cannot open “/etc/sysctl.d/90-omnibus-gitlab-kernel.sem.conf”: No such file or directory

(3) 虽然不知道这两句化的含义但是还是照着做了。

1
2
touch /opt/gitlab/embedded/etc/90-omnibus-gitlab-kernel.sem.conf
touch /opt/gitlab/embedded/etc/90-omnibus-gitlab-net.core.somaxconn.conf

5.占用资源过高

自从装了 gitlab 之后,服务器的cpu就一直在满载状态,导致了我很多其他的服务基本上无法使用了。

【解决方案】
后来还是通过修改配置文件解决了这个东西。

1
2
3
4
5
6
7
8
9
10
11
12
13
vim /etc/gitlab/gitlab.rb
$ vim /etc/gitlab/gitlab.rb

gitlab_rails['time_zone'] = 'Asia/Shanghai'
puma['worker_processes'] = 2
sidekiq['concurrency'] = 8
postgresql['shared_buffers'] = "128MB"
postgresql['max_worker_processes'] = 4
prometheus_monitoring['enable'] = false

# 重新配置
gitlab-ctl reconfigure
gitlab-ctl restart
参考文章:
【1】.2024-05-31: KAS behaving abnormally, huge CPU usage
【2】.gitlab部署+cpu使用过高调优 这里使用了docker部署的gitlab仓库,系统是2核4G的。主要调整的是限制内存的使用,调整postgresql的缓存以及进程,关闭prometheus监控。
【3】.记录gitlab仓库占用CPU和内存过高问题解决 2核16G云服务器上架着的gitlab总是占用着80%以上的CPU资源, 并且内存占用量总是会缓慢的升高, 每天都要重启服务很烦躁, 今天找到了大神的配置, 效果显著
【4】.解决 GitLab CPU 占用偏高 于是接下来彻底关闭 Prometheus
【5】.GitLab内存占用过高的解决方法 postgresql[‘shared_buffers’] //减少数据库缓存(默认为256MB 改为128MB),postgresql[‘max_worker_processes’] //减少数据库并发数(默认为8 改为4),sidekiq[‘concurrency’] //减少sidekiq并发数(默认为25 改为 15)
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。