草庐IT

极狐gitlib的安装和使用

打篮球两年半 2023-10-08 原文

极狐gitlib的安装和使用

一、实验环境

gitlib只需要单机即可以了,因为好恢复。
机器IP:192.168.199.202
机器配置:4C8G(最低配置)

二、安装部署(不带邮箱)

官方文档:链接: link

关闭防火墙(根据自己需求)

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

有关极狐gitlib的安装和使用的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  6. ruby - 使用 ruby​​ 和 savon 的 SOAP 服务 - 2

    我正在尝试使用ruby​​和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我

  7. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  8. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  9. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  10. ruby - 在 64 位 Snow Leopard 上使用 rvm、postgres 9.0、ruby 1.9.2-p136 安装 pg gem 时出现问题 - 2

    我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po

随机推荐