gitlab安装使用
一、gitlab安装使用
1.1 下载软件包
这里使用国内源进行下载
# 确认机器当前架构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.deb1.2 生成英文环境
# 安装并生成英文 UTF-8 语言环境apt update && apt install -y localeslocale-gen en_US.UTF-8
# 配置系统默认使用 en_US.UTF-8echo "LANG=en_US.UTF-8" > /etc/default/localeecho "LC_ALL=en_US.UTF-8" >> /etc/default/localeexport LANG=en_US.UTF-8export LC_ALL=en_US.UTF-8执行完后,退出当前 Shell 再重新登录,让 Locale 生效
1.3 进行安装
dpkg -i gitlab-ce_15.10.0-ce.0_amd64.deb
# 如果安装失败执行命令将残留卸载干净sudo dpkg --purge --force-all gitlab-ce
# 查看卸载完成后的状态dpkg -l | grep gitlab1.4 修改配置文件
配置gitlab服务,修改域名和邮箱
cat >> /etc/gitlab/gitlab.rb << 'EOF'external_url 'http://10.0.0.99'gitlab_rails['gitlab_email_enabled'] = truegitlab_rails['gitlab_email_from'] = '1111@qq.com'gitlab_rails['gitlab_email_display_name'] = '发件人姓名'gitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = "smtp.qq.com"gitlab_rails['smtp_port'] = 465gitlab_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'] = truegitlab_rails['smtp_tls'] = trueEOF# 重新加载配置gitlab-ctl reconfigure
# 进入控制台gitlab-rails console
# 测试邮件是否能够正确发送Notify.test_email('收件人邮箱','这是主题','这是正文').deliver_now1.5 gitlab命令行管理
gitlab-ctl start # 启动所有服务gitlab-ctl stop # 停止gitlab-ctl stop postgresql # 停止某个服务gitlab-ctl restartgitlab-ctl statusgitlab-ctl reconfigure # 重新读取gitlab配置gitlab-ctl tail # 查看gitlab的运行状态,所有服务状态gitlab-ctl tail redis # 只看某个服务的状态
# 检测gitlab的nginx状态netstat -tunlp|grep nginx
gitlab-ctl tail nginx1.6 登录gitlab网页
默认账号:root
默认密码:查看文件/etc/gitlab/initial_root_password
[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 重置密码:
# 进入控制台gitlab-rails console -e production
# 重置root密码user = User.where(id: 1).firstuser.password = '你的新密码'user.password_confirmation = '你的新密码'user.save!exit1.7 设置中文、关闭网页注册功能
1.7.1 设置中文


1.7.2 关闭网页注册功能
所有设置都在管理员界面中进行配置与管理


1.8 创建项目、用户、群组
1.8.1 创建用户
创建用户主要关注访问类型

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


1.8.3 新建项目

1.8.3.1 空白项目
填写:项目名称、项目URL的群组、可见性级别
可见性级别的选择还会跟群组的可见性级别相互关联

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

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

1.8.3.3 导入项目
选择项目的平台
之后填写好平台地址,及个人访问凭证进行导入

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

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

1.9.2 尝试克隆
# 开启 Git 凭证存储git config --global credential.helper store
# 执行克隆操作git clone http://10.22.51.72/hututu/konglong_xindong.git
# 之后会提示输入账户和gitlab访问令牌,之后再执行后续的推送、拉取都无需输入#凭证文件存放路径~/.git-credentials1.10 配置ssh秘钥
1.10.1 创建秘钥
ssh-keygen -t ed25519 -C "你的GitLab邮箱"
# 之后一路回车
# 查看公钥并复制cat ~/.ssh/id_ed25519.pub1.10.2 将秘钥上传到gitlab
粘贴到此处后确实即可

1.10.3 尝试是否可以使用
# 使用ssh的方式进行克隆代码git clone git@10.22.51.72:hututu/konglong_xindong.git1.11 保护main分支
路径:找到仓库信息->设置->仓库
填写好需要保护的分支以及对应操作的权限

1.12 管理多账号
方法:多套 SSH 秘钥 → 对应多个 GitLab 账号
1.12.1 生成多套秘钥
ssh-keygen -t ed25519 -C "hututu@xxx.com" -f ~/.ssh/id_ed25519_gitlab1ssh-keygen -t ed25519 -C "suazi@xxx.com" -f ~/.ssh/id_ed25519_gitlab21.12.2 配置ssh文件
配置 ~/.ssh/config
# 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_gitlab21.12.3 不同项目使用不同的host
# 先将原项目的远程仓库进行解绑git remote remove origin
# 绑定各自项目git clone git@gitlab1:hututu/project.git
git clone git@gitlab2:user01/project.git1.13 分支管理
1.13.1 新建分支
# 查看当前分支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构建合并请求,也可以登录网页端创建合并请求
[root@localhost /root/konglong_xindong]# git push --set-upstream origin fenzhiEnumerating objects: 4, done.Counting objects: 100% (4/4), done.Delta compression using up to 4 threadsCompressing 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 0remote: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=fenzhiremote:To gitlab1:hututu/konglong_xindong.git a9a1d6b..9aa2351 fenzhi -> fenzhibranch 'fenzhi' set up to track 'origin/fenzhi'.1.13.2 批准合并分支
申请合并请求后,指派人会收到合并请求,指派人对该请求进行审核、批准、合并等操作

1.13.3 本地拉取合并后的分支
远程仓库将分支合并后,本地仓库还是保存着以前分支,因此需要同步最新的主干,然后删除合并的分支
# 查看当前分支git branch
# 拉取远程最新状态git fetch origin --prune
# 切换到主干分支,拉取最新代码git switch maingit pull
# 可以看到切换的时候git还会提示分支已经合并到了主干分支[root@localhost /root/konglong_xindong]# git switch mainSwitched to branch 'main'Your branch is up to date with 'origin/main'.
# 清理多余分支git branch -D fenzhi1.14 gitlab备份配置
1.14.1 修改gitlab配置
cat >> /etc/gitlab/gitlab.rb << 'EOF'gitlab_rails['backup_path'] = "/gitlab_backup/"gitlab_rails['backup_keep_time'] = 604800EOF
# 重新加载gitlab配置gitlab-ctl reconfigure
# 准备备份数据的目录,和配置一致mkdir -p /gitlab_backup/1.14.2 执行备份命令
gitlab-rake gitlab:backup:create
# 查看备份数据[root@localhost /gitlab_backup]# ll -htotal 71Mdrwx------ 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.tar1.14.3 执行数据恢复命令
Gitlab的恢复只能恢复到与原本备份文件相同的gitlab版本中,恢复时,需要停止数据库的写入操作,但是保持gitlab是运行的。
# 停止如下三个服务gitlab-ctl stop unicorngitlab-ctl stop sidekiqgitlab-ctl stop nginx
# 进入备份文件夹cd /gitlab_backup
# 查看备份文件[root@localhost /gitlab_backup]# lltotal 71872drwx------ 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即可
# 重载配置gitlab-ctl reconfigure
# 重启gitlab服务gitlab-ctl restart
# 查看启动的服务gitlab-ctl status | grep run1.15 gitlab的https访问
# 修改配置,修改为https访问,如果是域名这需要配置好dns解析vim /etc/gitlab/gitlab.rbexternal_url 'https://10.0.0.99'
# 将准备好的证书放入自定义路径cd /etc/gitlab/ssl
# 修改该目录权限chmod -R 755 /etc/gitlab/ssl1.15.1 修改配置文件
再次修改/etc/gitlab/gitlab.rb中nginx的片段
letsencrypt['enable'] = false
nginx['enable'] = truenginx['redirect_http_to_https'] = truenginx['ssl_certificate'] = "/etc/gitlab/ssl/domain.pem"nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/domain.key"之后重新加载配置即可生效
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
赣公网安备36072602000131号