用GitLab搭建本地代码仓库
git 是一种基于命令的版本控制系统,全命令操作,没有可视化界面
gitlab 是一个基于git实现的在线代码仓库软件,提供web可视化管理界面,通常用于企业团队内部协作开发
当然还有github也可以用作代码仓库,较多用于个人
准备工作
安装git
git的使用和安装推荐本人另外一篇博客git使用指北
安装虚拟机
推荐下载VMwareWorkstation,可以到官网下载,然后百度搜索绿色方法
然后我们安装Linux镜像,本人使用的是Ubuntu20.4版本,这个网上一搜一大堆,随意选择版本,初学者可以选择桌面版本,如这里下载
然后一路安装,运行,设置root账户等
这里推荐虚拟机的使用2核,至少使用超过4GB的内存,本人直接上40GB
搭建基本环境
安装依赖项
如果是桌面版,右键进入终端,非桌面版忽略
1 | sudo apt update |
安装GitLab
1 | cd /tmp |
到tmp
目录安装gitlab,当然你可以自己选择目录
1 | sudo bash /tmp/script.deb.sh |
该脚本将设置您的服务器以使用GitLab维护的存储库。这使您可以使用与其他系统软件包相同的软件包管理工具来管理GitLab。完成后,您可以使用以下apt
命令安装实际的GitLab应用程序
1 | sudo apt install gitlab-ce |
此条命令将在系统上安装必要组件
如果在安装gitlab使有如下报错,可以今夏如下操作
1 | # apt-get install gitlab-ce |
修改安装脚本
1 | sudo vim /etc/apt/sources.list.d/gitlab_gitlab-ce.list |
OLD
1 | deb https://packages.gitlab.com/gitlab/gitlab-ce/ubuntu/ focal main |
NEW
1 | deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu focal main |
再次执行
1 | sudo apt update |
参考链接:https://gitlab.com/gitlab-org/gitlab-foss/-/issues/2370
修改防火墙
1 | sudo ufw status |
检查防火墙状态,如果没有防火墙需要apt安装
1 | sudo ufw allow http |
然后通过上述3条命令让防火墙支持http\https\OpenSSH
再次检查以后大概会有如下状态
1 | Status: active |
修改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
如下图
后面因为网段改为了2,所以整体把虚拟机和gitlab地址都改成了2段,然后运行gitlab就发现如下日志
直接告诉我招不到证书文件,于是翻遍资料最后找到一个粗暴的方法,手动生成证书文件
- 创建私钥和证书请求
1 | openssl req -nodes -newkey rsa:2048 -keyout 192.168.2.110.key -out 192.168.2.110.csr |
上面的ip地址需要替换你对应的地址
私钥会提示输入密码,记住了跟着提示输入
输入以后跟着提示输入你的信息,我这边老老实实的输入了正确信息,不确定可否随意输入
1 | Country Name (2 letter code) [XX]:CN |
- 移除私钥的密码短语
1 | cp -v /etc/gitlab/ssl/192.168.2.110.{key,original} |
- 创建证书
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 | chmod 600 /etc/gitlab/ssl/192.168.2.110.* |
有文章提示可以删除
.csr
文件,我这里没删除也没遇到问题如果需要删除,运行
rm -v /etc/gitlab/ssl/192.168.2.110.csr
然后重新配置gitlab,重启gitlab就可以了
仓库操作
创建仓库流程于github非常类似而且非常简单
然后我们需要为项目添加成员,如下图输入其他成员的邮箱或者用户名,添加以后其他用户自己登陆后也能看到项目了
完成仓库操作以后可以添加SSH Key来允许用户提交
然后我们可以在windows端clone下来,就可以正常git流程操作了