gitlab安装使用

2040 字
10 分钟
gitlab安装使用

一、gitlab安装使用#

1.1 下载软件包#

这里使用国内源进行下载

Terminal window
# 确认机器当前架构
lsb_release -a
# 下载对应的软件包
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/jammy/pool/main/g/gitlab-ce/gitlab-ce_15.10.0-ce.0_amd64.deb

1.2 生成英文环境#

Terminal window
# 安装并生成英文 UTF-8 语言环境
apt update && apt install -y locales
locale-gen en_US.UTF-8
# 配置系统默认使用 en_US.UTF-8
echo "LANG=en_US.UTF-8" > /etc/default/locale
echo "LC_ALL=en_US.UTF-8" >> /etc/default/locale
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

执行完后,退出当前 Shell 再重新登录,让 Locale 生效

1.3 进行安装#

Terminal window
dpkg -i gitlab-ce_15.10.0-ce.0_amd64.deb
# 如果安装失败执行命令将残留卸载干净
sudo dpkg --purge --force-all gitlab-ce
# 查看卸载完成后的状态
dpkg -l | grep gitlab

1.4 修改配置文件#

配置gitlab服务,修改域名和邮箱

Terminal window
cat >> /etc/gitlab/gitlab.rb << 'EOF'
external_url 'http://10.0.0.99'
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = '1111@qq.com'
gitlab_rails['gitlab_email_display_name'] = '发件人姓名'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "877348180@qq.com"
gitlab_rails['smtp_password'] = "pvthquniqpjvbbch"
gitlab_rails['smtp_domain'] = "smtp.qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
EOF
Terminal window
# 重新加载配置
gitlab-ctl reconfigure
# 进入控制台
gitlab-rails console
# 测试邮件是否能够正确发送
Notify.test_email('收件人邮箱','这是主题','这是正文').deliver_now

1.5 gitlab命令行管理#

Terminal window
gitlab-ctl start # 启动所有服务
gitlab-ctl stop # 停止
gitlab-ctl stop postgresql # 停止某个服务
gitlab-ctl restart
gitlab-ctl status
gitlab-ctl reconfigure # 重新读取gitlab配置
gitlab-ctl tail # 查看gitlab的运行状态,所有服务状态
gitlab-ctl tail redis # 只看某个服务的状态
# 检测gitlab的nginx状态
netstat -tunlp|grep nginx
gitlab-ctl tail nginx

1.6 登录gitlab网页#

默认账号:root

默认密码:查看文件/etc/gitlab/initial_root_password

Terminal window
[root@localhost /root]# cat /etc/gitlab/initial_root_password
# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
Password: a8PFZ+s/zBs2AyochZJXgBMY6T68R1jVCQIUFzYsg/g=
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.

输出的内容里,Password: 后面的字符串就是你的初始密码

**注意:**这个初始密码文件只会保留 24 小时,超过时间会被 GitLab 自动删除,所以安装后要尽快登录修改密码

1.6.1 重置密码#

如果文件已经被删除,说明你安装已经超过 24 小时,需要通过 gitlab-rails console 重置密码:

Terminal window
# 进入控制台
gitlab-rails console -e production
# 重置root密码
user = User.where(id: 1).first
user.password = '你的新密码'
user.password_confirmation = '你的新密码'
user.save!
exit

1.7 设置中文、关闭网页注册功能#

1.7.1 设置中文#

image-20260420170029022
image-20260420170029022

image-20260420170053664
image-20260420170053664

1.7.2 关闭网页注册功能#

所有设置都在管理员界面中进行配置与管理

image-20260420170210700
image-20260420170210700

image-20260420170250047
image-20260420170250047

1.8 创建项目、用户、群组#

1.8.1 创建用户#

创建用户主要关注访问类型

image-20260420171408436
image-20260420171408436

1.8.2 创建群组#

创建群组主要关注可见性级别、权限和群组功能

image-20260420171602464
image-20260420171602464

image-20260420171613390
image-20260420171613390

1.8.3 新建项目#

image-20260420171954333
image-20260420171954333

1.8.3.1 空白项目#

填写:项目名称、项目URL的群组、可见性级别

可见性级别的选择还会跟群组的可见性级别相互关联

image-20260420172154010
image-20260420172154010

创建项目后可以邀请成员或群组共同编辑管理

image-20260420172704918
image-20260420172704918

1.8.3.2 模版创建#

多个模板选择,其余选项与空白项目创建一致

image-20260420173123169
image-20260420173123169

1.8.3.3 导入项目#

选择项目的平台

之后填写好平台地址,及个人访问凭证进行导入

image-20260420173313837
image-20260420173313837

1.9 配置个人访问令牌#

1.9.1 创建个人访问令牌#

使用http方式来克隆、拉取、推送文件代码

不配置个人令牌也可以使用gitlab的账号密码来进行克隆、拉取、推送,只是使用访问令牌是使用密文,更加安全

image-20260421115115250
image-20260421115115250

令牌只会显示一次,刷新永久失效

image-20260421115155324
image-20260421115155324

1.9.2 尝试克隆#

Terminal window
# 开启 Git 凭证存储
git config --global credential.helper store
# 执行克隆操作
git clone http://10.22.51.72/hututu/konglong_xindong.git
# 之后会提示输入账户和gitlab访问令牌,之后再执行后续的推送、拉取都无需输入
#凭证文件存放路径
~/.git-credentials

1.10 配置ssh秘钥#

1.10.1 创建秘钥#

Terminal window
ssh-keygen -t ed25519 -C "你的GitLab邮箱"
# 之后一路回车
# 查看公钥并复制
cat ~/.ssh/id_ed25519.pub

1.10.2 将秘钥上传到gitlab#

粘贴到此处后确实即可

image-20260421143843454
image-20260421143843454

1.10.3 尝试是否可以使用#

Terminal window
# 使用ssh的方式进行克隆代码
git clone git@10.22.51.72:hututu/konglong_xindong.git

1.11 保护main分支#

路径:找到仓库信息->设置->仓库

填写好需要保护的分支以及对应操作的权限

image-20260421152957954
image-20260421152957954

1.12 管理多账号#

方法:多套 SSH 秘钥 → 对应多个 GitLab 账号

1.12.1 生成多套秘钥#

Terminal window
ssh-keygen -t ed25519 -C "hututu@xxx.com" -f ~/.ssh/id_ed25519_gitlab1
ssh-keygen -t ed25519 -C "suazi@xxx.com" -f ~/.ssh/id_ed25519_gitlab2

1.12.2 配置ssh文件#

配置 ~/.ssh/config

Terminal window
# host中的gitlab1和gitlab2用于后续匹配别名
Host gitlab1
HostName 10.22.51.72
User hututu
IdentityFile ~/.ssh/id_ed25519_gitlab1
Host gitlab2
HostName 10.22.51.72
User suazi
IdentityFile ~/.ssh/id_ed25519_gitlab2

1.12.3 不同项目使用不同的host#

Terminal window
# 先将原项目的远程仓库进行解绑
git remote remove origin
# 绑定各自项目
git clone git@gitlab1:hututu/project.git
git clone git@gitlab2:user01/project.git

1.13 分支管理#

1.13.1 新建分支#

Terminal window
# 查看当前分支
git brach
#创建分支并切换
git switch -c fenzhi
# 在分支中创建修改文件
touch fenzhi.txt
# 提交本地分支
git commit -m "创建修改了分支文件"
# 推送分支到远程仓库
git push --set-upstream origin fenzhi

推送后会给出一个合并分支请求url:http://10.22.51.72/hututu/konglong_xindong/-/merge_requests/new?

访问该url构建合并请求,也可以登录网页端创建合并请求

Terminal window
[root@localhost /root/konglong_xindong]# git push --set-upstream origin fenzhi
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 4 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 368 bytes | 184.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: To create a merge request for fenzhi, visit:
remote: http://10.22.51.72/hututu/konglong_xindong/-/merge_requests/new?merge_request%5Bsource_branch%5D=fenzhi
remote:
To gitlab1:hututu/konglong_xindong.git
a9a1d6b..9aa2351 fenzhi -> fenzhi
branch 'fenzhi' set up to track 'origin/fenzhi'.

1.13.2 批准合并分支#

申请合并请求后,指派人会收到合并请求,指派人对该请求进行审核、批准、合并等操作

image-20260422105823248
image-20260422105823248

1.13.3 本地拉取合并后的分支#

远程仓库将分支合并后,本地仓库还是保存着以前分支,因此需要同步最新的主干,然后删除合并的分支

Terminal window
# 查看当前分支
git branch
# 拉取远程最新状态
git fetch origin --prune
# 切换到主干分支,拉取最新代码
git switch main
git pull
# 可以看到切换的时候git还会提示分支已经合并到了主干分支
[root@localhost /root/konglong_xindong]# git switch main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
# 清理多余分支
git branch -D fenzhi

1.14 gitlab备份配置#

1.14.1 修改gitlab配置#

Terminal window
cat >> /etc/gitlab/gitlab.rb << 'EOF'
gitlab_rails['backup_path'] = "/gitlab_backup/"
gitlab_rails['backup_keep_time'] = 604800
EOF
# 重新加载gitlab配置
gitlab-ctl reconfigure
# 准备备份数据的目录,和配置一致
mkdir -p /gitlab_backup/

1.14.2 执行备份命令#

Terminal window
gitlab-rake gitlab:backup:create
# 查看备份数据
[root@localhost /gitlab_backup]# ll -h
total 71M
drwx------ 2 git root 4.0K Apr 22 13:26 ./
drwxr-xr-x 23 root root 4.0K Apr 22 13:16 ../
-rw------- 1 git git 71M Apr 22 13:26 1776835597_2026_04_22_15.10.0_gitlab_backup.tar

1.14.3 执行数据恢复命令#

Gitlab的恢复只能恢复到与原本备份文件相同的gitlab版本中,恢复时,需要停止数据库的写入操作,但是保持gitlab是运行的。

Terminal window
# 停止如下三个服务
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-ctl stop nginx
# 进入备份文件夹
cd /gitlab_backup
# 查看备份文件
[root@localhost /gitlab_backup]# ll
total 71872
drwx------ 2 git root 4096 Apr 22 13:41 ./
drwxr-xr-x 23 root root 4096 Apr 22 13:16 ../
-rw------- 1 git git 73584640 Apr 22 13:26 1776835597_2026_04_22_15.10.0_gitlab_backup.tar
# 执行恢复命令,填入文件的名字就好,不要后缀
gitlab-rake gitlab:backup:restore BACKUP=1776835597_2026_04_22_15.10.0

**注意:**恢复操作,就是删除 所有原有数据,然后恢复该最新的数据

看到如下结果就是正确的 Restore task is done.

之后重新读取配置,重启gitlab即可

Terminal window
# 重载配置
gitlab-ctl reconfigure
# 重启gitlab服务
gitlab-ctl restart
# 查看启动的服务
gitlab-ctl status | grep run

1.15 gitlab的https访问#

Terminal window
# 修改配置,修改为https访问,如果是域名这需要配置好dns解析
vim /etc/gitlab/gitlab.rb
external_url 'https://10.0.0.99'
# 将准备好的证书放入自定义路径
cd /etc/gitlab/ssl
# 修改该目录权限
chmod -R 755 /etc/gitlab/ssl

1.15.1 修改配置文件#

再次修改/etc/gitlab/gitlab.rb中nginx的片段

Terminal window
letsencrypt['enable'] = false
nginx['enable'] = true
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/domain.pem"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/domain.key"

之后重新加载配置即可生效

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

gitlab安装使用
https://2233941.xyz/posts/gitlab安装使用/
作者
lumifly
发布于
2026-07-06
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
lumifly
不逐世间万丈星河,自守一隅细碎明光
✨ 今日一言
" 加载中... "
——
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
本年还剩 -- --%
本月还剩 -- --%
本周还剩 -- --%
距离--
--
--
天气预报
站点统计
文章
24
分类
1
标签
15
总字数
136,852
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.12.1
文章许可
CC BY-NC-SA 4.0

文章目录