GitLab简介:
一个非常流行的开源项目,支持自我托管,并且提供了丰富的功能集,包括CI/CD等。
GitLab 社区版是开源且免费的,允许用户自行下载并在本地服务器上安装。
官方网站:https://packages.gitlab.com/gitlab/gitlab-ce
GitLab下载地址:
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el9/
上传安装包gitlab-ce-17.7.2-ce.0.el9.x86_64.rpm到服务器/opt目录
一、准备篇
1、操作系统:Rocky Linux-9.x
Rocky Linux 9.x系统安装配置图解教程
https://www.osyunwei.com/archives/14859.html
2、禁用selinux
#确认grubby软件包是否已经安装
rpm -q grubby
#添加selinux=0到内核命令行
grubby --update-kernel ALL --args selinux=0
#重启系统
shutdown -r now
#查看结果为Disabled
getenforce
3、防火墙设置
gitlab的默认端口配置为80
我们这里使用iptables作为防火墙
3.1关闭firewall
systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl mask firewalld
systemctl stop firewalld
yum -y remove firewalld
3.2安装iptables防火墙,开启相应的端口
我们使用80端口
yum -y install iptables-services #安装
vi /etc/sysconfig/iptables
# sample configuration for iptables service
# you can edit this manually or use system-config-firewall
# please do not ask us to add additional ports/services to this default configuration
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
:wq! #保存退出
systemctl enable iptables.service #设置防火墙开机启动
systemctl restart iptables.service #启动防火墙使配置生效
4、设置系统时间
rm -rf /etc/localtime #先删除默认的时区设置
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #替换亚洲/上海作为默认时区
vi /etc/sysconfig/clock #添加时区
Zone=Asia/Shanghai
:wq! #保存退出
timedatectl set-local-rtc 0
hwclock --systohc -u #系统时钟和硬件时钟同步,当前系统时区不为 UTC,是CST时间,所有要加-u参数
date #显示系统时间
date -s "2025-01-15 15:24:00" #修改时间
watch -n 1 date #显示实时时间
vi /etc/chrony.conf
#pool 2.rocky.pool.ntp.org iburst #注释
server ntp.aliyun.com iburst #添加
:wq! #保存退出
systemctl enable chronyd #重启服务
systemctl restart chronyd #重启服务
chronyc sources -v #查看时间同步信息
5、系统参数优化
vi /etc/security/limits.conf #在最后一行添加以下代码
* soft nproc unlimited
* hard nproc unlimited
* soft nofile 1000000
* hard nofile 1000000
:wq! #保存退出
vi /etc/sysctl.conf #在最后一行添加以下代码
fs.file-max = 65535000
fs.nr_open = 65535000
kernel.pid_max=655350
vm.swappiness = 0
net.ipv4.ip_forward = 1
:wq! #保存退出
/sbin/sysctl -p
ulimit -a #查看
ulimit -n 1000000 #设置
二、安装篇
1、安装gitlab
#检查当前是否安装gitlab
gitlab-ctl status
#安装依赖包
yum installpolicycoreutils-python-utils perl
#yum install policycoreutils-python perl #rhel-7系列用的是这个命令
cd /opt
rpm -ivh gitlab-ce-17.7.2-ce.0.el9.x86_64.rpm #安装
2、修改配置文件
mkdir -p /data/server/gitlab #创建gitlab数据存放目录,默认是在/var/opt/gitlab目录
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak #修改前先备份
vi /etc/gitlab/gitlab.rb #修改或添加配置信息
external_url 'http://192.168.21.190:80/' #设置外部url
gitlab_rails['time_zone'] = 'Asia/Shanghai' #设置时区
gitlab_rails['locale'] = 'zh-CN' #设置语言
#设置数据存储目录
git_data_dirs({
"default" => {
"path" => "/data/server/gitlab" #设置gitlab数据存放目录
}
})
#把下面3个取消注释,工作进程减少,最低为2
puma['worker_processes'] = 2
puma['min_threads'] = 2
puma['max_threads'] = 2
#ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.21.190'
#ssh端口配置
gitlab_rails['gitlab_shell_ssh_port'] =22
#邮件设置编辑修改配置文件
#我们使用qq邮箱,smtp_password是授权码,不是邮箱的登录密码,要特别注意
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "xxx@qq.com"
gitlab_rails['smtp_password'] = "xxxxxxxxxxx"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = false
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'xxx@qq.com'
:wq! #保存退出
gitlab-ctl reconfigure #重新加载配置
#进入控制台
gitlab-rails console
#测试发送邮件
Notify.test_email(‘收件人邮箱’, ‘邮件标题’, ‘邮件正文’).deliver_now #模板
Notify.test_email('yyy@qq.com', '测试邮件', '这是一份测试邮件').deliver_now
如果能收到邮件说明配置成功
exit; #退出控制台
gitlab-rake "gitlab:password:reset" #修改管理员用户root的密码,根据提示填写,root用户是内置的
root/3j+w0#mN
gitlab-rails console #进入控制台
user = User.find_by(username: 'root') #查找用户
user.email = 'zzz@139.com' #修改邮箱地址
user.save! #保存
exit; #退出控制台
#使配置文件生效
gitlab-ctl reconfigure
#设置开机启动
systemctl enable gitlab-runsvdir
#停止
gitlab-ctl stop
#启动
gitlab-ctl start
#重启
gitlab-ctl restart
3、访问gitlab
#浏览器打开
http://192.168.21.190/
输入账号密码登录
root/3j+w0#mN
#设置中文界面
最后刷新页面,已经是中文显示了。
继续创建一个项目
默认创建的项目main分支是受保护的,现在取消限制。
这样就取消了限制
#相关命令
#查看rpm包
rpm -qa | grep gitlab
#卸载gitlab
rpm -ev --nodeps `rpm -qa | grep gitlab`
#删除目录及文件
rm -rf /opt/gitlab /etc/gitlab /var/opt/gitlab /var/log/gitlab
#相关目录说明
#安装目录
/opt/gitlab
#配置文件目录
/etc/gitlab
#默认数据目录
/var/opt/gitlab
#日志目录
/var/log/gitlab
4、使用git提交和拉取代码
安装git软件:https://git-scm.com/downloads
这里我们使用Windows客户端,下载后默认安装就可以
提交和拉取代码前要先配置ssh密钥
桌面右键打开-Open Git Bash here
4.1配置用户名
#osyunwei为自己的用户名,可以自定义,提交记录的时候会显示这个用户名
git config --global user.name 'osyunwei'
4.2配置邮箱
#添加自己的邮箱地址
git config --global user.email '190062279@qq.com'
git config --list #查看配置
#上两步生成的信息会在C:\Users\账号 下生成.gitconfig配置文件,特别注意此文件不能删除,此文件记录了账号和邮箱
4.3使用Git生成ssh密钥对,运行命令时需要三次回车
ssh-keygen -t ed25519
4.4 在C:\Users\用户名\.ssh 目录下会生成.ssh文件夹,此文件夹中有以下两个文件
id_ed25519
id_ed25519.pub
需要把文件夹中的公钥( id_ed25519.pub)添加到GitLab管理平台中
如图所示进行添加
这样ssh密钥就添加好了
4.5克隆远程仓库到本地,然后进行代码上传和拉取
新建目录D:\work,在work文件夹上右键打开-Open Git Bash here
克隆远程仓库到本地
会在当前目录下创建一个名为 project 的文件夹,并自动设置好 origin 远程仓库地址
git clone ssh://git@192.168.21.190/group/project.git
查看目录D:\work\project已经有一个README文件了
在这个目录创建一个测试文件,然后进行代码上传
在D:\work\project文件夹上右键打开-Open Git Bash here
链接远程仓库,因为刚才已经拉取过代码了,所有已经有了远程仓库信息
相关命令
查看现有远程仓库信息
git remote -v
移除现有的远程仓库
git remote remove origin
#添加远程仓库信息
git remote add origin ssh://git@192.168.21.190/group/project.git
#上传代码到仓库
git add .
git commit -m 20250117
git fetch origin #获取远程仓库的最新信息
git push -uf origin main #推送代码
git pull origin main #拉取远程仓库最新代码
4.6在本地新建一个仓库,并且初始化仓库,进行代码上传和拉取
新建目录D:\newwork,在这个目录创建一个测试文件,然后在newwork文件夹上右键打开-Open Git Bash here
git init #初始化新的 Git 仓库
git checkout -b main #创建并切换到 main 分支
#添加远程仓库地址
git remote add origin ssh://git@192.168.21.190/group/project.git
git remote -v #查看远程仓库信息
#上传代码到仓库
git add .
git commit -m 20250117new
git fetch origin #获取远程仓库的最新信息
git push -uf origin main #推送代码
git pull origin main #拉取远程仓库最新代码
git branch -m main #重命名本地分支为 main
至此,Linux下安装部署GitLab社区版完成。