GitLab 简介

  1. GitLab由主要由以下服务构成,他们共同承担了Gitlab的运作需要:
    • nginx: 静态web服务器
    • gitlab-shell: 用于处理Git命令和修改authorized keys列表
    • gitlab-workhorse: 轻量级的反向代理服务器
    • logrotate:日志文件管理工具
    • postgresql:数据库
    • redis:缓存数据库
    • sidekiq:用于在后台执行队列任务(异步执行)
    • unicorn:HTTP服务,GitLab Rails应用是托管在这个服务器上面的。
  2. 主要配置文件目录:
    • 主配置文件: /etc/gitlab/gitlab.rb
    • 文档根目录: /opt/gitlab
    • 默认存储库位置: /var/opt/gitlab/git-data/repositories
    • Nginx配置文件: /var/opt/gitlab/nginx/conf/gitlab-http.conf
    • Postgresql数据目录: /var/opt/gitlab/postgresql/data

GitLab安装

以下为通过安装包的形式进行GitLab安装:
1.手动下载指定安装包的方式:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
2.命令下载指定安装包的方式:wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.10.5-ce.0.el7.x86_64.rpm
3.进入到安装包所在目录下进行安装:sudo rpm -Uvh gitlab-ce-14.6.3-ce.0.el7.x86_64.rpm
4.安装完成后对配置文件进行配置:给external_url配置域名或ip。注意:如果需配置自定义端口还需配置puma['port'] = 指定端口。如果端口被占用则需配置nginx['listen_port'] = 指定端口
5.配置完成后需重新加载配置:gitlab-ctl reconfigure
6.注意:除非您在安装过程中指定了自定义密码,否则将随机生成一个密码并存储在 /etc/gitlab/initial_root_password 文件中(出于安全原因,24 小时后,此文件会被第一次 gitlab-ctl reconfigure 自动删除,因此若使用随机密码登录,建议安装成功初始登录成功之后,立即修改初始密码)。使用此密码和用户名 root 登录

GitLab常用命令

  1. 更新配置,并启动GitLab服务:gitlab-ctl reconfigure
  2. 启动 GitLab:gitlab-ctl start
  3. 重启 GitLab:gitlab-ctl restart
  4. 停止 GitLab:gitlab-ctl stop
  5. 查看GitLab服务状态:gitlab-ctl status
  6. 查看GitLab日志:gitlab-ctl tail
  7. 卸载GitLab:gitlab-ctl uninstall

GitLab更新

  1. 查看版本号命令:
  • cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
  1. GitLab默认安装路径:

    1
    2
    3
    4
    /opt/gitlab/ ## 主目录
    /etc/gitlab/ ## 放置配置文件
    /var/opt/gitlab/ ## 各个组件
    /var/log/gitlab/ ## 放置日志文件
  2. 官方安装文档及安装包下载
    GitLab14.10:官方升级文档
    GitLab的跨版本升级,需要先升级到当前大版本的最高版本后再升到下一版本。每升级一个版本都要重启gitlab登陆页面看看,有没有问题,确定无误之后方可进行升级下一个版本,因此如需升级到15版本升级路线如下:

    14.6.3 —> 14.10.5 —> 15.0.4—> 15.1.1

    安装包官方下载源:链接
    安装包清华下载源:链接
    或通过wget下载: wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.10.5-ce.0.el7.x86_64.rpm

  3. 确认升级影响
    对于单节点安装,GitLab 在升级过程中对用户不可用。用户的 Web 浏览器显示Deploy in progress消息或502错误。

  4. 升级前备份
    GitLab 提供了用于备份和恢复 GitLab 实例的 Rake 任务。
    应用程序数据备份会创建一个包含数据库、所有存储库和所有附件的存档文件。
    您只能将备份恢复到与 创建它的 GitLab完全相同的版本和类型 (CE/EE) 。将项目从一台服务器迁 移到另一台服务器的最佳方式是通过备份和恢复。
    备份命令(备份好的数据在没改备份路径的情况下,默认的目录是:/var/opt/gitlab/backups):

    • GitLab 12.2 或更高版本:gitlab-backup create
    • GitLab 12.1 及更早版本:gitlab-rake gitlab:backup:create
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
注意:
(1)GitLab 不会备份未存储在文件系统上的项目。如果您使用的是对象存储,请确保在需要时使用您的对象存储提供程序启用备份。
(2)GitLab 不备份任何配置文件 ( /etc/gitlab)、TLS 密钥和证书或系统文件。强烈建议您阅读有关存储配置文件的信息
GitLab 提供了一个命令行界面来备份您的整个实例,包括:
- 数据库
- 附件
- Git 存储库数据
- CI/CD 作业输出日志
- CI/CD 作业工件
- LFS 对象
- Terraform 状态(在 GitLab 14.7 中 引入)
- 容器注册表映像
- GitLab 页面内容
- 包(在 GitLab 14.7 中 引入)
- 片段
- 组 wiki

配置文件需要单独备份:

  • /etc/gitlab/gitlab.rb

  • /etc/gitlab/gitlab-secrets.json

  1. 升级到14.10版本:
  • 下载安装包:wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.10.5-ce.0.el7.x86_64.rpm

  • 升级新版本:rpm -Uvh gitlab-ce-14.10.5-ce.0.el7.x86_64.rpm

  1. 恢复备份:

    • 先拷贝要恢复的文件到:/var/opt/gitlab/backups
    • 进入到备份文件夹下执行(对应文件时间戳):gitlab-rake gitlab:backup:restore BACKUP = 1596428908_2020_08_03_9.4.5
    • 注意该恢复文件的权限,有可能影响GitLab恢复命令的执行!

GitLab定时备份

修改配置文件:vim /etc/gitlab/gitlab.rb

1
2
3
4
gitlab_rails['manage_backup_path'] = true					//开启备份功能
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups" //指定备份的路径
gitlab_rails['backup_archive_permissions'] = 0644 //备份文件权限
gitlab_rails['backup_keep_time'] = 7776000 //备份保留时间(90天,单位:秒)

重新载入GitLab配置:gitlab-ctl reconfigure
定时备份方式一(只有root用户能操作):

  • 编辑定时器配置 :vim /etc/crontab
  • 加入以下配置(备份时间根据需要进行配置,以下为每天22点进行备份):
  • 0 22 * * * root /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
  • 最后重启下:systemctl restart crond

定时备份方式二(所有用户都能操作):

  • 添加定时任务:crontab -e
  • 查看已添加的定时任务:crontab -l
  • 例子:0 22 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create

GitLab卸载

  • 先停止服务:gitlab-ctl stop
  • 卸载GitLab(注意版本类型):rpm -e gitlab-ce
  • 查看GitLab进程:ps aux | grep gitlab
  • 杀掉第一个进程(就是带有好多………….的进程):kill -9
  • 删除所有包含gitlab文件:find / -name "*gitlab*" | xargs rm -rf

相关资料查阅:
https://www.cnblogs.com/lgj8/p/14637893.html
https://blog.csdn.net/weixin_42424397/article/details/125033027