用GitLab搭建本地代码仓库

git 是一种基于命令的版本控制系统,全命令操作,没有可视化界面

gitlab 是一个基于git实现的在线代码仓库软件,提供web可视化管理界面,通常用于企业团队内部协作开发

当然还有github也可以用作代码仓库,较多用于个人

准备工作

安装git

git的使用和安装推荐本人另外一篇博客git使用指北

安装虚拟机

推荐下载VMwareWorkstation,可以到官网下载,然后百度搜索绿色方法

然后我们安装Linux镜像,本人使用的是Ubuntu20.4版本,这个网上一搜一大堆,随意选择版本,初学者可以选择桌面版本,如这里下载

然后一路安装,运行,设置root账户等

这里推荐虚拟机的使用2核,至少使用超过4GB的内存,本人直接上40GB

搭建基本环境

安装依赖项

如果是桌面版,右键进入终端,非桌面版忽略

1
2
sudo apt update
sudo apt install ca-certificates curl openssh-server postfix
安装GitLab
1
2
cd /tmp
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

tmp目录安装gitlab,当然你可以自己选择目录

1
sudo bash /tmp/script.deb.sh

该脚本将设置您的服务器以使用GitLab维护的存储库。这使您可以使用与其他系统软件包相同的软件包管理工具来管理GitLab。完成后,您可以使用以下apt命令安装实际的GitLab应用程序

1
sudo apt install gitlab-ce

此条命令将在系统上安装必要组件

如果在安装gitlab使有如下报错,可以今夏如下操作

1
2
3
4
5
# apt-get install gitlab-ce
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package gitlab-ce

修改安装脚本

1
2
sudo vim /etc/apt/sources.list.d/gitlab_gitlab-ce.list
1

OLD

1
2
3
deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ focal main
deb-src https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ focal main
12

NEW

1
2
3
deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu focal main
deb-src https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu focal main
12

再次执行

1
2
3
sudo apt update
sudo apt install gitlab-ce
12

参考链接:https://gitlab.com/gitlab-org/gitlab-foss/-/issues/2370

修改防火墙
1
sudo ufw status

检查防火墙状态,如果没有防火墙需要apt安装

1
2
3
sudo ufw allow http
sudo ufw allow https
sudo ufw allow OpenSSH

然后通过上述3条命令让防火墙支持http\https\OpenSSH

再次检查以后大概会有如下状态

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Status: active

To Action From
-- ------ ----
80 ALLOW Anywhere
22 ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
OpenSSH ALLOW Anywhere
80 (v6) ALLOW Anywhere (v6)
22 (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
修改GitLab配置文件
1
sudo vim /etc/gitlab/gitlab.rb

该文件比较大,在顶部找到``external_url `,按照如下注释修改

1
external_url 'https://example.com' // 此处修改为您的域名或ip地址,不用加端口

然后查找letsencrypt['contact_emails'],如果没有先忽略跳过,如果有则进行如下修改

1
letsencrypt['contact_emails'] = ['sammy@example.com'] // 此处修改为您的邮箱地址

然后重新配置GitLab

1
sudo gitlab-ctl reconfigure // 每次修改配置文件都需要重新配置

本人在这一步遇到一个报错,最后一句是Please upgrade your ACME client to a version that supports ACMEv2 / RFC

解决方法是在 /etc/gitlab/gitlab.rb 中添加 letsencrypt['enable'] = false

重启

1
sudo gitlab-ctl restart
GitLab常用命令
常用命令 说明
sudo gitlab-ctl reconfigure 重新加载配置,每次修改/etc/gitlab/gitlab.rb文件之后执行
sudo gitlab-ctl status 查看 GitLab 状态
sudo gitlab-ctl start 启动 GitLab
sudo gitlab-ctl stop 停止 GitLab
sudo gitlab-ctl restart 重启 GitLab
sudo gitlab-ctl tail 查看所有日志
sudo gitlab-ctl tail nginx/gitlab_acces.log 查看 nginx 访问日志
sudo gitlab-ctl tail postgresql 查看 postgresql 日志
systemctl enable gitlab-runsvdir.service 开机启动
systemctl disable gitlab-runsvdir.service 禁止开机自启动
首次登陆

在Web浏览器中访问GitLab服务器的域名:

1
https://example.com // 您external_url配置的地址

第一次访问需要设置管理员密码,记得保存,之后如果没有gitlab账户就需要创建一个并登陆,然后就可以正常创建项目了

证书问题

有时候因为各种原因需要修改仓库端的虚拟机ip,也就意味着gitlab需要修改ip地址

这些操作很基础,在上面也讲了,但是修改IP以后本人发现原有的证书就无效了,应该是第一次部署的时候默认会生成我们IP对应的证书,我这边的第一次部署的ip地址是192.168.1.111如下图

image-20201021104015652

后面因为网段改为了2,所以整体把虚拟机和gitlab地址都改成了2段,然后运行gitlab就发现如下日志

image-20201021104134810

直接告诉我招不到证书文件,于是翻遍资料最后找到一个粗暴的方法,手动生成证书文件

  1. 创建私钥和证书请求
1
openssl req -nodes -newkey rsa:2048 -keyout 192.168.2.110.key -out 192.168.2.110.csr

上面的ip地址需要替换你对应的地址

私钥会提示输入密码,记住了跟着提示输入

输入以后跟着提示输入你的信息,我这边老老实实的输入了正确信息,不确定可否随意输入

1
2
3
4
5
6
7
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:zhejiang
Locality Name (eg, city) [Default City]:hangzhou
Organization Name (eg, company) [Default Company Ltd]:xiaoshan
Organizational Unit Name (eg, section) []:xiaoshan
Common Name (eg, your name or your server's hostname) []:xiaoshan
Email Address []:自己的邮箱地址
  1. 移除私钥的密码短语
1
2
3
4
cp -v /etc/gitlab/ssl/192.168.2.110.{key,original}
openssl rsa -in /etc/gitlab/ssl/192.168.2.110
-out /etc/gitlab/ssl/192.168.2.110.key
rm -v /etc/gitlab/ssl/192.168.2.110.original
  1. 创建证书
1
openssl x509 -req -days 1460 -in /etc/gitlab/ssl/192.168.2.110.csr -signkey /etc/gitlab/ssl/192.168.2.110.key -out /etc/gitlab/ssl/192.168.2.110.crt
  1. 设置权限
1
chmod 600 /etc/gitlab/ssl/192.168.2.110.*

有文章提示可以删除.csr文件,我这里没删除也没遇到问题

如果需要删除,运行rm -v /etc/gitlab/ssl/192.168.2.110.csr

然后重新配置gitlab,重启gitlab就可以了

仓库操作

创建仓库流程于github非常类似而且非常简单

image-20200818071803709

然后我们需要为项目添加成员,如下图输入其他成员的邮箱或者用户名,添加以后其他用户自己登陆后也能看到项目了

image-20200818073638776

完成仓库操作以后可以添加SSH Key来允许用户提交

image-20200818071718978

然后我们可以在windows端clone下来,就可以正常git流程操作了

image-20200818071856868