百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Gitlab搭建及配置(gitlab中文版搭建)

itomcoil 2025-07-28 17:22 7 浏览

Gitlab搭建及配置

Gitlab安装

安装依赖

# 安装依赖
yum -y install curl policycoreutils-python openssh-server perl
# 安装postfix(如果没有的情况下)
yum -y install postfix 
systemctl enable postfix 
systemctl start postfix 
# 如果出现不能启动
[root@HK-CodeServ-242 software]# journalctl -xe
Jan 16 17:01:01 HK-CodeServ-242 CROND[13416]: (root) CMD (run-parts /etc/cron.hourly)
Jan 16 17:01:01 HK-CodeServ-242 run-parts(/etc/cron.hourly)[13419]: starting 0anacron
Jan 16 17:01:01 HK-CodeServ-242 run-parts(/etc/cron.hourly)[13425]: finished 0anacron
Jan 16 17:01:21 HK-CodeServ-242 polkitd[1007]: Registered Authentication Agent for unix-process:13428:591766 (system bus name :1.62 [/usr/bin/pkttyagent --noti
Jan 16 17:01:21 HK-CodeServ-242 systemd[1]: Starting Postfix Mail Transport Agent...
-- Subject: Unit postfix.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit postfix.service has begun starting up.
Jan 16 17:01:21 HK-CodeServ-242 aliasesdb[13434]: /usr/sbin/postconf: fatal: parameter inet_interfaces: no local interface found for ::1
Jan 16 17:01:22 HK-CodeServ-242 aliasesdb[13434]: newaliases: fatal: parameter inet_interfaces: no local interface found for ::1
Jan 16 17:01:22 HK-CodeServ-242 postfix/sendmail[13436]: fatal: parameter inet_interfaces: no local interface found for ::1
Jan 16 17:01:22 HK-CodeServ-242 postfix[13441]: fatal: parameter inet_interfaces: no local interface found for ::1
Jan 16 17:01:23 HK-CodeServ-242 systemd[1]: postfix.service: control process exited, code=exited status=1
Jan 16 17:01:23 HK-CodeServ-242 systemd[1]: Failed to start Postfix Mail Transport Agent.

# 修改配置文件
vi /etc/postfix/main.cf

inet_interfaces = localhost #将localhost修改为all

[root@HK-CodeServ-242 software]# systemctl start postfix
[root@HK-CodeServ-242 software]# systemctl enable postfix

yum安装

使用官方YUM源

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash 
yum makecache fast 
yum -y install gitlab-ce 

国内源安装

vi /etc/yum.repos.d/gitlab-ce.repo 
//添加如下内容 
[gitlab-ce] 
name=Gitlab CE Repository 
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/ 
gpgcheck=0 
enabled=1 

yum makecache fast 
yum -y install gitlab-ce 

rpm安装

到网站下载rpm包

# 安装依赖
yum -y install curl policycoreutils-python openssh-server perl
# 安装postfix(如果没有的情况下)
yum -y install postfix 
systemctl enable postfix 
systemctl start postfix 
# 安装Gitlab
rpm -ivh gitlab-ce-13.11.3-ce.0.el7.x86_64.rpm

Gitlab部分配置

配置文件目录/etc/gitlab/gitlab.rc
配置访问地址

external_url 'https://codeserv.xxx.com'
或者
external_url 'https://codeserv.xxx.com:12312'

配置https

mkdir /etc/gitlab/ssl
# 开启强制https
nginx['redirect_http_to_https'] = true
# nginx证书位置
nginx['ssl_certificate'] = "/etc/gitlab/ssl/xxx.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/xxx.key"
# 关闭letsencrypt
letsencrypt['enable'] = false

Gitlab备份路径

# 备份路径设置
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" #备份路径
gitlab_rails['backup_keep_time'] = 604800  # gitlab备份保留7天 1209600

#如果要迁移需要手动备份
/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json

Gitlab关闭prometheus

prometheus['enable'] = false

Gitlab 邮箱配置

gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = "xxx@qq.com" #你的QQ号邮箱
gitlab_rails['gitlab_email_display_name'] = "admin" #发件显示名称

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'] = "******"  #QQ邮箱授权码
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

# 完成后测试
gitlab-rails console
Notify.test_email('测试用的收件邮箱地址不是xxx@qq.com', '邮件主题', '邮件内容').deliver_now

# 测试成功后需要在新建的用户中设置接收消息配置

Gitlab初始化

# 在配置文件修改完成后执行,每次修改也需要执行这个命令加载配置
gitlab-ctl reconfigure
初始化默认管理员帐户的用户名为 root ,密码存储在/etc/gitlab/initial_root_password 文件中,此文件将在 24 小时后的第一次重新配置运行中清除

常用命令

# 启动,重启,停止gitlab
sudo gitlab-ctl start #启动
sudo gitlab-ctl restart #重启
sudo gitlab-ctl start #停止

# 查看服务状态
sudo gitlab-ctl status

# 使用控制台实时查看日志
sudo gitlab-ctl tail  #查看所有的logs; 按 Ctrl-C 退出
sudo gitlab-ctl tail gitlab-rails  #拉取/var/log/gitlab下子目录的日志
sudo gitlab-ctl tail nginx/gitlab_error.log #拉取某个指定的日志文件


vim /etc/gitlab/gitlab.rb  #查看配置文件
sudo gitlab-ctl reconfigure   #更新配置文件
gitlab-rake gitlab:check SANITIZE=true --trace  #检查gitlab
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION  #查看GitLab的版本

Gitlab备份

# 定时备份,自动备份
crontab -e
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

#手动备份
/opt/gitlab/bin/gitlab-rake gitlab:backup:create

Gitlab还原

防止Gitlab-ce数据还原时发生PostgreSQL异常

# 异常信息
Restoring PostgreSQL database gitlabhq_production ... ERROR:  must be owner of extension pg_trgm
ERROR:  must be owner of extension btree_gist
ERROR:  must be owner of extension btree_gist
ERROR:  must be owner of extension pg_trgm
# 修改配置文件postgresql.conf
vim /var/opt/gitlab/postgresql/data/postgresql.conf
listen_addresses = '*'  # 修改为*
# 修改配置文件pg_hba.conf,最下面增加
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
# 进入数据库修改
[root@CN-CodeServ-17 backups]# su - gitlab-psql #执行
-sh-4.2$ /opt/gitlab/embedded/bin/psql -h 127.0.0.1 gitlabhq_production #执行
......
gitlabhq_production=# ALTER USER gitlab WITH SUPERUSER; # 执行
ALTER ROLE
gitlabhq_production=# \q #执行
-sh-4.2$ exit #执行

停止Gitlab数据服务

gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq

恢复Gitlab数据

# 拷贝备份文件到新Gitlab服务器配置文件设置的备份目录
cp 1673607956_2023_01_13_13.11.3_gitlab_backup.tar /var/opt/gitlab/backups/
# 进入备份目录
cd /var/opt/gitlab/backups
chown git:git 1673607956_2023_01_13_13.11.3_gitlab_backup.tar
# 恢复备份
# 这里有个神坑,gitlab在指定恢复的备份文件时,指定的名称在不同的版本也略有不同,13这个版本需要指定为1673607956_2023_01_13_13.11.3后面的_gitlab_backup.tar会自动补全,切记这个真的很坑
root@CN-CodeServ-17 backups]# gitlab-rake gitlab:backup:restore BACKUP=1673607956_2023_01_13_13.11.3 #恢复命令
Unpacking backup ... done
Be sure to stop Puma, Sidekiq, and any other process that
connects to the database before proceeding. For Omnibus
installs, see the following link for more information:
https://docs.gitlab.com/ee/raketasks/backup_restore.html#restore-for-omnibus-gitlab-installations

Before restoring the database, we will remove all existing
tables to avoid future upgrade problems. Be aware that if you have
custom tables in the GitLab database these tables and all data will be
removed.

Do you want to continue (yes/no)? yes  #输入yes
.....
 * liufei/site-search.design (@hashed/d4/ee/d4ee9f58e5860574ca98e3b4839391e7a356328d4bd6afecefc2381df5f5b41b.design) ... 
 * liufei/site-search.design (@hashed/d4/ee/d4ee9f58e5860574ca98e3b4839391e7a356328d4bd6afecefc2381df5f5b41b.design) ... [DONE]
2023-01-15 19:06:02 +0800 -- done
2023-01-15 19:06:02 +0800 -- Restoring uploads ... 
2023-01-15 19:06:02 +0800 -- done
2023-01-15 19:06:02 +0800 -- Restoring builds ... 
2023-01-15 19:06:02 +0800 -- done
2023-01-15 19:06:02 +0800 -- Restoring artifacts ... 
2023-01-15 19:06:07 +0800 -- done
2023-01-15 19:06:07 +0800 -- Restoring pages ... 
2023-01-15 19:06:07 +0800 -- done
2023-01-15 19:06:07 +0800 -- Restoring lfs objects ... 
2023-01-15 19:06:07 +0800 -- done
This task will now rebuild the authorized_keys file.
You will lose any data stored in the authorized_keys file.
Do you want to continue (yes/no)? yes   #输入yes

Warning: Your gitlab.rb and gitlab-secrets.json files contain sensitive data 
and are not included in this backup. You will need to restore these files manually.
Restore task is done.

Gitlab迁移后部分页面报错500

方法1

在旧gitlab配置文件未删除的情况下,拷贝gitlab-secrets.json文件到新服务器替换,重启gitlab。

# 配置文件位置,复制到新gitlab
/etc/gitlab/gitlab-secrets.json
# 重新加载配置文件
gitlab-ctl reconfigure
# 重启gitlab服务
gitlab-ctl restart

方法2

若旧gitlab配置已删除,可执行以下两组命令重置相关CI的所有密钥和token。

# 进入控制台
gitlab-rails console
# 执行命令
irb(main):001:0> Ci::Runner.all.update_all(token_encrypted: nil)
# 重启gitlab服务
gitlab-ctl restart
# 进入控制台
gitlab-rails dbconsole
# 执行命令
gitlabhq_production=>  UPDATE projects SET runners_token = null, runners_token_encrypted = null;
gitlabhq_production=>  UPDATE namespaces SET runners_token = null, runners_token_encrypted = null;
gitlabhq_production=>  UPDATE application_settings SET runners_registration_token_encrypted = null;

执行完命令后,\q 退出.重启gitlab服务

Gitlab升级

Gitlab找回密码

# 1.重置root密码之前,需先使用root用户登录到gitlab所在服务器。启动Ruby on Rails控制台。
gitlab-rails console -e production

# 2.等待控制台加载完毕,有多种找到用户的方法,您可以搜索电子邮件或用户名。
user = User.where(id: 1).first
或者
user = User.find_by(email: 'admin@example.com')

# 3.现在更改密码。
user.password = '新密码'
user.password_confirmation = '新密码'

# 4.注意,必须同时更改密码和password_confirmation才能使其正常工作,最后别忘了保存更改。
user.save

root@971e942b7a70:/# gitlab-rails console -e production
--------------------------------------------------------------------------------
 Ruby:         ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux]
 GitLab:       14.3.0 (ceec8accb09) FOSS
 GitLab Shell: 13.21.0
 PostgreSQL:   12.7
--------------------------------------------------------------------------------
Loading production environment (Rails 6.1.3.2)
irb(main):001:0> user = User.where(id: 1).first
=> #<User id:1 @root>
irb(main):002:0> user.password = 'admin1234'
=> "admin1234"
irb(main):004:0> user.password_confirmation = 'admin1234'
=> "admin1234"
irb(main):005:0> user.save
Enqueued ActionMailer::MailDeliveryJob (Job ID: 191a2ed7-0caa-4122-bd06-19c32bffc50c) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", {:args=>[#<GlobalID:0x00007f72f7503158 @uri=#<URI::GID gid://gitlab/User/1>>]}
=> true

相关推荐

辣评1+1|幽默的男人运气不会太差,犯了罪的除外

一波冷空气吹来了全国大范围降温,也吹来了“年轻人不讲武德”“耗子尾汁”等爆梗。凡事有别,凡事有度。“不讲武德”换来大家津津乐道,“不讲规则”却让大家头皮发麻,更别提有些人“不通人性”“不守法律”了……...

养龟之人,不可不常备的几种龟药,必要时,可救龟命

养龟的过程中,总会出现这样那样的问题,有些新人因为不懂龟的习性或者管理不到位,容易导致自己的爱龟出问题,如果处理不及时不妥当,容易造成不必要的损失,所以,养龟的过程中,家中常备一些龟药十分必要,建议养...

宠物龟越狱摔伤了,饲主该如何正确地处理它的伤口?

昨晚有一个龟友发信息向我求救,他家的宠物龟越狱了,从高高的地方摔下来,砸在水泥板上,臀甲部位摔裂了,问我怎么处理妥当?现在就跟大家分享分享我们的实战经验:如何正确地处理宠物龟的外伤!(此处已添加圈子卡...

PS入门系列三(ps入门级教程)

PS软件基础(三)一、钢笔工具1.精细的抠图,也可以绘制精细的直线段和曲线段2.使用方法:(1)绘制直线:鼠标点击,两个点形成一条直线,按住SHIFT可绘制角度(45°的倍数)的直线。...

第一千五百一十七天:20250721(星期一.阵雨)

天是真地热啊,更加怀念东北的凉爽。即使说有新闻东北迎来了史上最热的酷署,但我依旧坚定地认为没有湖北热,至少没有湖北的闷热。上午开了一上午的会,会议室里即使有空调但可能由于人和电脑太多了,制冷效果非常一...

格力、美的、先锋和艾美特油汀取暖器拆机测试PK

人在家中坐,寒从脚底来,刷抖音的时候手脚真的是冰凉到没办法。南方的冬天,我琢磨了一下,感觉它只会慢慢折磨咱们,而且咱们南方还没集中供暖。于是就上网看了看,发现这个电热油汀可以烤袜子,好像很有用的样子,...

《photoshop教程》设计师PSD文档管理指南

这是一个重要但是容易被忽视的领域,很多设计师没有文档管理和文档规范意识。认为只有代码工作者才需要什么编码规范和版本控制系统,Photoshop作为一个应用软件,讨论这个有什么意义呢?作为工程文件,一个...

为何要坚决抵制“马保国式黑红”(抵制违规吃喝表态发言)

作者:天歌“耗子尾汁(好自为之)”“年轻人不讲武德”“我大意了啊没有闪”……最近流行的几句网络用语,都出自于马保国。然而,原本承诺退出“江湖”的他却频繁出现在公众视线,自曝拍电影、走穴参加网红活动。...

车圈父与子 看谁跟高级别车型长得更像

[爱卡汽车导购原创]故事发生在美孚小学的5W-40班。这天语文课上,老师给同学们布置作业“今天给大家布置一篇作文,题目是《长大之后我就成了你》。回去认真观察自己的父母,找出自己容貌、性格、爱好等方...

月季难养吗?药罐子、肥篓子是什么意思?养好月季连载教程(三)

大家好,我是木木。今天给大家带来月季养护系列教程的第四节(月季种植难度),这是为了给还没有入坑的花友简单介绍一下月季的种植难度,希望大家对月季的养护有一个大概的了解,不要因为感觉难度太大而望而却步,也...

Linux文件操作高频使用命令(linux文件操作高频使用命令是什么)

0.新建操作:mkdirabc#新建一个文件夹touchabc.sh#新建一个文件1.查看操作查看目录:ll#显示目录文件详细信息du-h文件/目录#查看大小pwd#显示路径查...

PS生化危机2游戏:里昂.S.肯尼迪流程攻略(里关)

浣熊镇警察局的探索克莱尔带着莎瑞逃出了浣熊镇,与和她们一起的那位警官的活跃也是分不开的,他的名字是-里昂.S.肯尼迪和克莱尔分手后一直向前跑,进警局后门停车场,先去右边值班室拿钥匙,然后打开停车场左边...

PS版在印刷过程中易出现的问题(印刷厂ps版)

PS版的任务是使图文部分尽可能精确地传到橡皮布上。图文部分亲水,非图文部分亲墨。但实际上并没有这么理想,会出现各种各样的与PS版有关的问题。下面举出一些并加以讨论。  1.版面非图文部分起脏,即非图文...

夜读|为什么我们要围观马保国?(为什么会有马保国)

张丰“打工是不可能打工的”那位去做直播了,“年轻人不讲武德”的马保国要去拍电影了。他在微博上发了条视频,解释参演原因,但网友需付费成为“真爱粉”才能看。视频中,他还推销了拳法书籍。咦?我怎么觉得,马老...

40种CAD常见问题解决方法,从此不再求人

前言:CAD软件是我们经常用到的办公软件,但是我们在用CAD软件的时候经常遇到一些棘手的问题,不知道怎么解决?这40个问题解决方法,可以收藏备用!正文:1.【Ctrl键无效之解决办法】有时我们会碰到这...