Ubuntu20.4搭建Gitlab并上传项目

阿里云学生白嫖2C4G服务器

在这里:阿里云高校学生计划 (aliyun.com),早上八点之前可零元购两个月的ECS,我便用来学习Gitlab+Gitlab Runner+Devops等等

GitLab的安装与登入

环境准备

进入阿里云服务器控制台,找到实例,我们可以看到自己服务器的详细信息如下:

云服务器管理控制台

我们利用SecureCRT远程连接公网IP,linux服务器的默认用户名为root,初次创建服务器需要通过重置实例密码生成。我们能SSH连接服务器是因为默认在安全组上开放了22号端口。

安装GitLab

参考:Ubuntu19.1 中 GitLab 的安装配置与卸载

  • 开启防火墙
1
2
ufw enable
ufw status //查看防火墙状态,应该只有OpenSSH服务是打开的

接下来我们添加几个端口:

1
2
3
ufw allow http
ufw allow https
ufw allow OpenSSH
  • 安装依赖项
1
2
apt update //刷新本地包索引
apt install ca-certificates curl openssh-server postfix //安装依赖项,提供邮箱通知服务

接下来会出现以下画面:

一直回车即可

可能会让你设置一个邮箱:

1
levi@ubuntu-gitlab.com //我设置成了这个,随便设置的,后面可以改,可以选择回车跳过

打开HTTP和SSH端口:

1
2
iptables -I INPUT -m tcp -p tcp --dport 22 -j ACCEPT
iptables -I INPUT -m tcp -p tcp --dport 80 -j ACCEPT

可能会在安装依赖项的时候出现以下问题:

只需要换源即可,因为我们用的是阿里云,服务器里就已经自动换成了阿里云镜像了。

  • 安装Gitlab

官方下载地址太慢了,这里我们换源:

1、首先信任 GitLab 的 GPG 公钥:

1
curl https://packages.gitlab.com/gpg.key 2> /dev/null | sudo apt-key add - &>/dev/null

2、打开vi:

1
vi /etc/apt/sources.list.d/gitlab-ce.list

3、将下面的内容粘贴进去

1
deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main  //粘贴至文本中,按Esc键,键入:,最后输入wq保存并退出。

4、安装 gitlab-ce:

1
2
apt-get update
apt-get install gitlab-ce

gitlab安装成功

5、打开 sshd 和 postfix 服务

1
2
service sshd start
service postfix start

6、更新配置

1
gitlab-ctl reconfigure
  • 配置GitLab
1
vim /etc/gitlab/gitlab.rb

找到external_url = 'http://git.example.com'并将其修改成external_url = 'http://公网ip:4399'

公网IP就是服务器中的公网ip,而不是私网IP,因为我们本机是访问不了私网IP的。4399就是访问端口,可以自由配置,如果只填IP的话,端口默认为8080。

建议配置一个自定的端口,但一定要求是没有被占用的端口,可以事先通过lsof -i:<port>来查看port是否被占用。

1
2
gitlab-ctl reconfigure
gitlab-ctl restart

重启gitlab服务,可以注意看restart后有没有启动unicorn服务,如果没有将很可能出现502错误。(我就是这个问题)

  • 阿里云安全组添加端口

来到阿里云安全组配置,进入配置规则:

手动添加4399端口,源直接填0.0.0.0/0,这是保证我们使用IP:PORT登入的时候不会出现

没有添加端口所致

同时我们也要添加80端口,这是为TCP开放的。

如果添加了80端口和4399端口安全组也无法直接登入,需要查看是否为防火墙问题:阿里云服务器 80 端口设置了安全组还是无法访问

1
2
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=4399/tcp --permanent

添加好80和4399端口后保存

1
firewall-cmd --reload

查看是否添加成功:

1
firewall-cmd --zone=public --list-ports

登入Gitlab

在地址栏输入公网ip:4399可直接访问GitLab,如果成功进入则会先让你设置密码。之后就能正常登入使用了,默认登入账户是root

也可以注册

502错误排查

8080与unicorn默认端口冲突

如果配置gitlab时使用的是8080默认端口,而且unicorn也开启了,就会出现两者端口冲突的现象。

1
vim /etc/gitlab/gitlab.rb

按下esc进入命令模式,利用/查询制定字符串,按回车确定,n向下翻动,N向上翻动。

找到以下两处配置,取消注释,并修改端口:

1
2
3
4
5
nicorn['port'] = 8888

gitlab_workhorse['auth_backend'] = "http://localhost:8888"

//unicorn['port']与gitlab_workhorse['auth_backend']的端口必须相同

保存并重启

1
2
gitlab-ctl reconfigure
gitlab-ctl restart

服务器防火墙未开启端口

1
ufw allow 4399

将gitlab服务的端口添加进去,需要删除就输入ufw delete allow 4399

等待时长过短

这种情况适用于等待较长时间后出现502界面的。

依旧打开gitlab配置文件:

1
vim /etc/gitlab/gitlab.rb

找到以下两项并修改如下:

1
2
gitlab_rails['webhook_timeout'] = 90
gitlab_rails['graphql_timeout'] = 90

更新配置并启动。

GitLab还未完全启动/内存不足

GItLab启动所需内存空间较大,理论最低要求4G的内存空间,如果低于则无法正常启动。

同样的,GitLab启动需要一段时间,首次启动需要等待1-2分钟才能完全启动。通过free -m可以查看free空间大小,通过不断查询发现free空间不断减小,说明gitlab正在启动中。

未开启unicorn

我就是这个错误,因为我的502是瞬间就刷出来的,而且即使是多等待gitlab启动几分钟后也无济于事。

排查过程

试了以上方法都不行,我stackflow上找到灵感,输入lsof -i:4399发现gitlab正在占用,没有问题

输入lsof -i:8888发现没有结果,也就说明8888没有被unicorn占用!!!因而我怀疑是否开启了unicorn服务。

输入命令gitlab-ctl status发现没有unicorn这一项,于是发现了问题来源。

依然是打开gitlab配置文件:

1
2
3
4
vim /etc/gitlab/gitlab.rb
//找到并修改以下两项,取消注释
unicorn['enable'] = true
puma['enable'] = false

保存并重启gitlab后,我们发现unicorn出现了。再次输入IP:4399终于成功登入了!!!!!

再次查看端口占用情况:

unicorn端口分配成功成功

Gitlab初使用

添加SSH Key

本机安装过git的,在user/.ssh/id_rsa中存有密钥,将其配置到gitlab的SSH KEY中即可。

下拉项目和上传项目

公司使用Gitlab管理项目实践指南 - 知乎 (zhihu.com)

GitLab CI+Docker+SpringBoot

博客参考:GitLab Ci+docker持续化部署SpringBoot项目_Manaphy Chen的博客-CSDN博客

1
gitlab-runner register #注册runner,s

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!