此教程基于Ubuntu22.04
进行阐述,只有部分操作系统特有操作外,应该具有普适性,如果在其他操作系统(如 CentOS
/Deepin
等)进行gitlab的搭建,也具有一定的参考意义。
首先安装一些依赖项和邮件:
sudo apt install -y curl openssh-server ca-certificates postfix
这个时候会在终端中弹出提示,需要选择和确认一些东西,选择的时候,直接选择Internet Site
,后续都是直接选择OK
即可。
然后安装对应的gitlab-ce
,千万不要选择什么极狐那些玩意!!!
注意,这里是debain
系的安装办法,如果是redhat
系,请自行搜索!
https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
然后执行命令:
sudo EXTERNAL_URL="http://ip:port" apt install gitlab-ce
注意这里的EXTERNAL_URL
将会写入到gitlab的配置文件中的,我这里采用的方式是http://ip:port
的方式,也就是主机ip加端口的方式,比如我的主机ip为12.1.12.13
,我想给gitlab分配端口8000
,那么这里就是 http://12.1.12.13:8000
。
这样已经完成了安装!
注意刚刚分配了端口,但是linux默认有防火墙机制,需要对端口进行规则处理。并且希望gitlab能够开机自启等。
Ubuntu22.04配置端口的允许(其他系统的自行查找):
sudo ufw allow 8000
开机自启的设置:
systemcl enable gitlab-runsvdir
经过前面的配置,已经可以登录网页了,使用http://ip:port
即可登录,页面如下:
设置网页内部中文显示的方法:
如果要新建项目、更换头像、管理成员等等操作,请自行搜索教程,非常庞杂,这里不进行赘述。
如果有配置成https的需要,则继续阅读,否则已经完成配置了!!!
依次进行如下命令操作
sudo mkdir -p /etc/gitlab/ssl
sudo chmod 755 /etc/gitlab/ssl
sudo openssl genrsa -des3 -out /etc/gitlab/ssl/gitdev.key 2048
sudo openssl req -new -key /etc/gitlab/ssl/gitdev.key -out /etc/gitlab/ssl/gitdev.csr
# sudo cp -v /etc/gitlab/ssl/gitdev.{key,original}
# sudo openssl rsa -in /etc/gitlab/ssl/gitdev.original -out /etc/gitlab/ssl/gitdev.key
# sudo rm -v /etc/gitlab/ssl/gitdev.original
sudo openssl x509 -req -days 1460 -in /etc/gitlab/ssl/gitdev.csr -signkey /etc/gitlab/ssl/gitdev.key -out /etc/gitlab/ssl/gitdev.crt
sudo rm -v /etc/gitlab/ssl/gitdev.csr
sudo chmod 600 /etc/gitlab/ssl/gitdev.key
sudo chmod 600 /etc/gitlab/ssl/gitdev.crt
注意:
这里的
gitdev
可以更改为你的喜好命名!
打开配置文件
sudo vim /etc/gitlab/gitlab.rb
然后修改如下这一行:
external_url 'https://12.1.12.13:8000'
注意:
在前面2.2的时候,写的是
http://12.1.12.13:8000
,这里改成https
即可
然后让配置生效:
sudo gitlab-ctl reconfigure
现在则可以通过https://ip:port
访问网页了。
这个时候如果直接使用如下命令拉取仓库:
git clone https://xxx:/xx/xx.git
会发现报错,没有认证文件……
解决办法是在git bash
或者Linux的终端输入命令:
git config --global http.sslVerify false
也就是通过git配置来解决,请注意使用global
还是local
,这个区别就是全局还是只针对当前仓库的区别,请自行选择。
前面步骤配置完成之后,就可以通过如下的方式进行代码的拉取推送了:
# http方式
git clone http://xxx:/xx/xx.git
# https方式
git clone https://xxx:/xx/xx.git
但是,使用ssh进行各种拉取推送操作,才是更为安全简洁的,原因可自行搜索。
这里针对Windows下配置,Linux下大差不差。
注意,必须使用git bash
进行操作,Linux下则可以直接在终端操作。
ssh-keygen
则在用户目录下生成了一个.ssh
目录,里面有一些文件:
将id_rsa.pub
的内容按照如下进行操作:
如果只进行以上步骤,在克隆时会发现无法成功……会提示类似这样的东西:
git@12.1.12.13's password:
然后不管你输入什么密码都不行……
所以,需要你的额外操作来解决问题。
仍然是打开git bash
:
vim ~/.ssh/config
然后输入:
# gitlab
Host 12.1.12.13
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
注意IdentityFile
对应的文件和路径一定是你真正生成的文件路径。
然后就可以愉快地进行玩耍了!
教程同步发布在我的微信公众号:
https://mp.weixin.qq.com/s/4grXds3jNQEgF7w0W20nKw