极狐gitlib的安装和使用
- 一、实验环境
- 二、安装部署(不带邮箱)
- 三、一些操作
- 3.1 常用命令
- 3.2 备份
- 3.2.1 备份文件分为两步:
- 3.2.2 自定义备份位置
- 3.3 恢复
- 3.4 一些问题
- 3.5 包含的组件
- 四、使用极狐gitlib
- 4.1 初始登录说明
- 4.2 新建用户
- 4.3 新建一个群组
- 4.3 新建一个项目
- 4.4 在项目中邀请成员
- 4.5 新建分支
- 4.6 开启分支保护
- 4.7 分支合并
一、实验环境
gitlib只需要单机即可以了,因为好恢复。
机器IP:192.168.199.202
机器配置:4C8G(最低配置)
二、安装部署(不带邮箱)
关闭防火墙(根据自己需求)
systemctl stop firewalld
setenforce 0
iptables -F
安装依赖
yum install -y curl policycoreutils-python openssh-server perl
配置极狐GitLab 软件源镜像
curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
替换下面的IP为自己的IP
,注意是http
。(这里先不弄https)
包比较大,会慢一些
EXTERNAL_URL="http://192.168.199.202" yum install -y gitlab-jh
安装自动已经配置了开机自启,顺便查看一下组件状态
[root@node2 ~]# gitlab-ctl status
run: alertmanager: (pid 19545) 57s; run: log: (pid 19131) 92s
run: gitaly: (pid 19351) 67s; run: log: (pid 17824) 197s
run: gitlab-exporter: (pid 19509) 59s; run: log: (pid 18819) 110s
run: gitlab-kas: (pid 19477) 61s; run: log: (pid 18168) 182s
run: gitlab-workhorse: (pid 19487) 60s; run: log: (pid 18649) 127s
run: logrotate: (pid 17653) 212s; run: log: (pid 17673) 211s
run: nginx: (pid 18687) 123s; run: log: (pid 18703) 122s
run: node-exporter: (pid 19501) 60s; run: log: (pid 18770) 116s
run: postgres-exporter: (pid 19555) 57s; run: log: (pid 19191) 86s
run: postgresql: (pid 17982) 189s; run: log: (pid 18058) 186s
run: prometheus: (pid 19524) 59s; run: log: (pid 19092) 96s
run: puma: (pid 18477) 142s; run: log: (pid 18502) 139s
run: redis: (pid 17719) 206s; run: log: (pid 17754) 203s
run: redis-exporter: (pid 19511) 59s; run: log: (pid 18873) 104s
run: sidekiq: (pid 18531) 136s; run: log: (pid 18567) 133s
也可以直接安装rpm包,依赖不能少
rpm -ivh gitlab-jh-15.5.2-jh.0.el7.x86_64.rpm
vim /etc/gitlab/gitlab.rb
#只有一行配置需要修改,不修改也可以
external_url 'http://gitlab.example.com' 修改为external_url 'http://YOUR_IP'
# 启动
gitlab-ctl reconfigure
gitlab-ctl status
三、一些操作
3.1 常用命令
# 启动所有 gitlab 组件
sudo gitlab-ctl start
# 停止所有 gitlab 组件
sudo gitlab-ctl stop
# 启所有 gitlab 组件
sudo gitlab-ctl restart
# 查看服务状态
sudo gitlab-ctl status
# 重新配置并启动服务
sudo gitlab-ctl reconfigure
# 修改默认的配置文件
sudo vim /etc/gitlab/gitlab.rb
# 检查gitlab
gitlab-rake gitlab:check SANITIZE=true --trace
# 查看日志
sudo gitlab-ctl tail
3.2 备份
3.2.1 备份文件分为两步:
1、配置文件直接手动备份
/etc/gitlab/gitlab.rb:主配置文件,包含外部URL、仓库目录、备份目录等
/etc/gitlab/gitlab-secrets.json:(执行gitlab-ctl reconfigure命令行后生成),包含各类密钥的加密信息
cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb_`date +%F`
cp /etc/gitlab/gitlab-secrets.json /etc/gitlab/gitlab-secrets.json_`date +%F`
2、数据文件,使用以下方式备份
手动执行备份
sudo gitlab-backup create
or
sudo /opt/gitlab/bin/gitlab-rake gitlab:backup:create
会有提示说需要手动备份配置文件,就是上一个步骤
如果定时备份,例如每天凌晨2点30分备份
30 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create
上面的备份结果如下:
3.2.2 自定义备份位置
备份默认位置 /var/opt/gitlab/backups
修改备份位置
vim /etc/gitlab/gitlab.rb
gitlab_rails['manage_backup_path'] = true
# 备份目录
gitlab_rails['backup_path'] = "/backup/gitlab"
# 备份包(tar格式压缩包)的权限
gitlab_rails['backup_archive_permissions'] = 0644
# 备份的保留时间,单位是秒
gitlab_rails['backup_keep_time'] = 604800
重载配置生效
mkdir -p /backup/gitlab
gitlab-ctl reconfigure
3.3 恢复
1、前提条件
准备好原配置文件 /etc/gitlab/gitlab.rb /etc/gitlab/gitlab-secrets.json
以及数据文件
2、确保GitLab服务的启动可访问,并且版本和备份数据版本一致
命令行查看
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
OR
访问 http://192.168.199.202/help
3、拷贝备份文件至指定的backups目录下(默认为/var/opt/gitlab/backups
),并确保权限为777
PS:我这里一台机器演示,所以用了上面设置的备份目录
cd /backup/gitlab/
chmod 777 1670833283_2022_12_12_15.6.2-jh_gitlab_backup.tar
4、 使用gitlab-ctl命令停止unicorn(或者puma)以及sidekiq服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
5、使用gitlab-backup restore进行数据恢复
gitlab-rake gitlab:backup:restore force=yes BACKUP=1670833283_2022_12_12_15.6.2-jh
会有pg报错,不过好像没什么影响
为了保险起见,可以参考一下别人的处理(这里放在重启之后)
6、 恢复gitlab-secrets.json文件与gitlab.rb 配置文件
7、重设、重启服务并检查
gitlab-ctl reconfigure
gitlab-ctl restart
gitlab-rake gitlab:check SANITIZE=true
8、修改上面第5步的错误
修改postgresql配置
vim /var/opt/gitlab/postgresql/data/postgresql.conf
#修改为
listen_addresses = '*'
vim /var/opt/gitlab/postgresql/data/pg_hba.conf
#最后添加两行
local all all trust
host all all 127.0.0.1/32 trust
重启gitlab服务
gitlab-ctl restart
修改gitlab账号为超级用户
su - gitlab-psql
/opt/gitlab/embedded/bin/psql -h 127.0.0.1 gitlabhq_production
psql (9.2.8)
Type "help" for help.
gitlabhq_production=# ALTER USER gitlab WITH SUPERUSER;
ALTER ROLE
gitlabhq_production=# \q
3.4 一些问题
Q1: 忘记密码,修改root密码
#使用黑屏终端修改root密码
gitlab-rails console -e production
user = User.where(username:"root").first
user.password = "12345687"
user.save! # 返回true,则root用户密码修改为 12345687
Q2: 修改gitlab nginx port
只修改listen port,不运行 reconfig,只运行 restart
vim /var/opt/gitlab/nginx/conf/gitlab-http.conf
gitlab-ctl restart nginx
Q3: 卸载gitlab
gitlab-ctl stop
rpm -ql gitlab-ce
ps aux | grep gitlab | awk '{print $2}' | xargs -I {} kill -9 {}
rm -rf /opt/gitlab /etc/gitlab /var/log/gitlab /var/opt/gitlab
Q4: gitlab-ctl reconfigure 卡死
另开终端运行 nohup /opt/gitlab/embedded/bin/runsvdir-start &
Q5: git 克隆 源码ssh 方式成功,http方式失败
检查密钥,重设sshkey
3.5 包含的组件
1. repository:代码库,可以是硬盘或 NFS 文件系统
2. Nginx:Web 入口
3. 数据库:包含以下信息:
- repository 中的数据(元数据,issue,合并请求 merge request 等)
- 可以登录 Web 的用户(权限)
4. Redis:缓存,负责分发任务
5. sidekiq:后台任务,主要负责发送电子邮件。任务需要来自 Redis
6. Unicorn:Gitlab 自身的 Web 服务器,包含了 Gitlab 主进程,负责处理快速/一般任务,与 Redis 一起工作。工作内容包括:
- 通过检查存储在 Redis 中的用户会话来检查权限
- 为 Sidekiq 制作任务
- 从仓库(warehouse)取东西或在那里移动东西
7. gitlab-shell:用于 SSH 交互,而不是 HTTP。gitlab-shell 通过 Redis 与 Sidekiq 进行通信,并直接或通过 TCP 间接访问 Unicorn
8. gitaly:后台服务,专门负责访问磁盘以高效处理 git 操作,并缓存耗时操作。所有的 git 操作都通过 Gitaly 处理
9. gitlab-workhorse:反向代理服务器,可以处理与 Rails 无关的请求(磁盘上的CSS、JS 文件等),处理Git Push/Pull 请求,处理到Rails的连接(修改由Rails发送的响应或发送给 Rails 的请求,管理 Rails 的长期 WebSocket 连接等)。
10. mail_room:处理邮件请求。回复 GitLab 发出的邮件时,GitLab 会调用此服务
Sidekiq. Unicorn 和 GitLab-shell 是GitLab中处理任务的 3 个程序。
四、使用极狐gitlib
参考:链接: link
4.1 初始登录说明
初始安装的用户为root
密码在 /etc/gitlab/initial_root_password
中务必24小时
之内登录并修改密码
[root@node2 ~]# grep "^Password" /etc/gitlab/initial_root_password
Password: pCC1wACGJ83RWngVaMx/EXptEc8QBtMpW/kjRkMyD6E=
登录,浏览器中输入:
http://192.168.199.202
去掉注册限制,不然谁都能注册
1、
2、
3、
4.2 新建用户
左上角主菜单 >> 选择管理员 >> 选择新建用户
开始新建用户
拉倒最后点击创建用户
我这里没有设置邮箱,所以手动设置密码。
点击保存后编辑用户信息即可设定密码。
密码 (最短为 8 个字符
)
拉到最后保存即可。
首次登录会要求更改密码,可以和旧密码一样
4.3 新建一个群组
开始新建
拉到最后点击创建群组
4.3 新建一个项目
左上角主菜单 >> 选择管理员 >> 选择新建项目
PS:其实路径很多
1、
2、
3、
4.4 在项目中邀请成员
加入到群组中也是一样的
菜单 >> 项目 >> 查看所有项目
1、
2、
3、
角色的区别
匿名用户 Guest 访客(只能创建问题和留言评论)
报告人 Reporter 可以理解为测试员、产品经理等,一般负责提交问题等
开发人员 Developer 负责项目开发
管理者 Master 一般是组长,负责对Master分支进行维护
所有者 Owner 一般是项目经理【拥有所有权限】
4.5 新建分支
多个分支可以更好的协同作业,提高效率
参考 4.4 先进到项目中
1、
2、
git地址
4.6 开启分支保护
栗子:
为test分支配置分支保护
这样拥有Developer权限的开发人员就不能修改test分支的代码
只能在dev分支做开发。
拥有Maintainers权限的项目经理定期将dev的代码合并到test分支
4.7 分支合并
如果按上一步设置了分支保护
Maintainers可以直接合并分支到test
Developer可以发起分支合并请求然后由Maintainers批准
合并的前提是dev新增了代码,且无代码冲突
先去掉删除源分支,不然合并之后分支没了
拉到最后,点击保存
开始模拟
先在dev上随便写一些代码用作模拟
1、
2、
3、
3、
发起合并请求
点击左侧“合并请求”——“新建”
1、
2、
3、
4、
知识储备+1