当前位置:首页>Linux>Linux部署gitlab用rpm方式

Linux部署gitlab用rpm方式

  • 2026-08-25 17:03:53
Linux部署gitlab用rpm方式

一. 安装前准备

在正式安装 GitLab 之前,需要先安装一些依赖软件并配置邮件服务。

  1. 安装依赖:打开终端,执行以下命令安装必要的依赖包。

    sudo yum install -ycurl policycoreutils-python openssh-server

    curl:用于传输数据。

    policycoreutils-python:用于管理 SELinux 策略。

    openssh-server:用于通过 SSH 协议访问 Git 仓库。

    2.配置 Postfix (用于邮件通知):Postfix 是一款邮件传输代理,GitLab 通过它来发送邮件通知(如注册确认、评论提醒等)。

# 安装 Postfix
sudo yum install -y postfix

# 设置 Postfix 开机自启并立即启动
sudo systemctl enable postfix
sudo systemctl start postfix

二. 安装 GitLab (RPM方式)

安装 GitLab 主要有两种 RPM 方式:通过官方仓库在线安装(推荐)和直接使用 RPM 包手动安装。

方式一:通过官方仓库安装 (在线,最常用)

这是最标准的安装方式,系统会自动处理依赖关系和后续的更新。

添加 GitLab 官方仓库:

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudobash

安装 GitLab CE 包:安装时可以同时配置外部访问 URL(即你之后在浏览器中访问 GitLab 的地址)

# 请将 http://your_server_ip 替换为你服务器的实际 IP 地址或域名
sudoEXTERNAL_URL="http://your_server_ip" yum install -y gitlab-ce

如果不想在安装时指定,也可以安装完成后在配置文件中修改

方式二:直接使用 RPM 包安装 (离线或指定版本)

如果你需要在没有网络的环境下安装,或者需要安装特定版本,可以手动下载 RPM 包进行安装。

  1. 下载 RPM 包:从国内镜像源(如清华大学镜像站)或官方仓库下载对应系统版本的 GitLab RPM 包。例如

    wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.0.2-ce.0.el7.x86_64.rpm

2.执行本地安装:

# 使用 rpm 命令安装,-i 代表安装,-v 代表显示详细信息,-h 代表显示进度
sudo rpm -ivh gitlab-ce-15.0.2-ce.0.el7.x86_64.rpm

如果遇到依赖缺失,可以使用 yum 命令自动解决并补装:

sudo yum install -y gitlab-ce-15.0.2-ce.0.el7.x86_64.rpm

三. 基础配置与启动

无论哪种方式安装,完成后的基础配置步骤是一致的。

修改配置文件 (可选):如果安装时没有设置 EXTERNAL_URL,或者需要修改其他配置(如端口、时区等),可以编辑主配置文件。

sudovim /etc/gitlab/gitlab.rb

找到 external_url 这一行,将其修改为你的服务器地址和端口
external_url 'http://192.168.1.100:8080'

应用配置并启动:这是最关键的一步。reconfigure 命令会根据 gitlab.rb 中的配置来生成所有子服务的配置文件并启动它们。

# 这个过程需要几分钟,请耐心等待
sudo gitlab-ctl reconfigure

四. 首次登录与常用管理命令

首次登录

  1. 在浏览器中输入你配置的 external_url (例如 http://192.168.1.100:8080)。

  2. 首次访问,你需要设置 root 用户的密码。或者,你也可以查看系统自动生成的初始密码(24小时内有效)

    sudocat /etc/gitlab/initial_root_password

    3.使用用户名 root 和刚才设置的密码(或初始密码)登录。

GitLab 常用管理命令

日常运维中,最常用的就是 gitlab-ctl 命令集

命令用途
sudo gitlab-ctl reconfigure最常用。修改配置文件 /etc/gitlab/gitlab.rb 后必须执行,用于重新应用配置。
sudo gitlab-ctl start启动所有 GitLab 服务。
sudo gitlab-ctl stop停止所有 GitLab 服务。
sudo gitlab-ctl restart重启所有 GitLab 服务。
sudo gitlab-ctl status查看所有 GitLab 服务的运行状态。
sudo gitlab-ctl tail实时查看所有 GitLab 服务的日志。也可指定服务名,如 sudo gitlab-ctl tail nginx。

五. 卸载 GitLab

如果不再需要 GitLab 或需要彻底重装,可以按以下步骤完全卸载

停止服务:

sudo gitlab-ctl stop

卸载软件包:

# 如果安装的是社区版 (CE)
sudo rpm -e gitlab-ce
# 如果安装的是企业版 (EE)
# sudo rpm -e gitlab-ee

删除残留文件:

删除 GitLab 创建的所有数据、配置和日志目录。

sudorm-rf /opt/gitlab
sudorm-rf /var/opt/gitlab
sudorm-rf /etc/gitlab
sudorm-rf /var/log/gitlab

六. 数据备份与恢复

6.1.数据备份

6.1.1 创建备份

执行以下命令即可创建一个完整的 GitLab 备份包(包含数据库、仓库、附件等)。

# GitLab 12.2 及以上版本
sudo gitlab-backup create

# 或者对于旧版本 GitLab
sudo gitlab-rake gitlab:backup:create

命令执行过程:

它会生成一个以时间戳命名的 .tar 文件。

默认存储在 /var/opt/gitlab/backups 目录下。

例如:1701234567_2023_11_29_15.0.2_gitlab_backup.tar

6.1.2 备份关键配置文件(非常重要!)

gitlab-backup 命令只备份数据,不会备份配置文件。在恢复时,配置文件是必需的。因此,你需要手动备份以下两个关键目录:

# 创建备份目录(如果不存在)
sudomkdir-p /root/gitlab-config-backup

# 备份配置文件和密钥
sudocp /etc/gitlab/gitlab.rb /root/gitlab-config-backup/
sudocp /etc/gitlab/gitlab-secrets.json /root/gitlab-config-backup/

# 可选:将密钥打包下载到安全的地方

特别提醒:gitlab-secrets.json 文件包含了数据库加密密钥和 2FA 密钥,如果丢失,恢复后用户将无法通过 2FA 登录。

6.1.3 自定义备份策略

如果你想修改备份的保留时间或存储位置,可以编辑 /etc/gitlab/gitlab.rb 配置文件

# 打开配置文件
sudovi /etc/gitlab/gitlab.rb

# 找到以下行并修改

# 1. 修改备份保留时间(单位:秒,604800 = 7天)
gitlab_rails['backup_keep_time'] =604800

# 2. 修改备份存储路径
gitlab_rails['backup_path'] ="/mnt/backups/gitlab"

# 保存文件后,重新配置生效
sudo gitlab-ctl reconfigure

6.1.4 自定义备份策略

使用 cron 任务实现每天自动备份。

# 编辑 root 用户的 crontab
sudo crontab -e

# 添加以下行,表示每天凌晨 2 点执行备份
02 * * * /usr/bin/gitlab-backup create

# 如果同时想备份配置文件,可以写一个脚本:
# 0 2 * * * /usr/bin/gitlab-backup create && cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab-secrets.json /var/opt/gitlab/backups/

6.2 数据恢复

恢复过程要求 GitLab 的版本与备份时的版本完全一致,并且配置相同。

1. 恢复前的准备
停止数据写入服务:避免在恢复过程中有新的数据进入。
# 停止与数据库相关的服务,但保持 web 服务可访问(显示维护页面)
sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq

确认备份文件存在:检查备份文件是否在正确的目录下。

# 检查备份文件
ls-la /var/opt/gitlab/backups/

确保备份文件的权限正确:

sudochowngit:git /var/opt/gitlab/backups/1701234567_2023_11_29_15.0.2_gitlab_backup.tar
2. 执行恢复命令
恢复时需要使用备份文件的时间戳部分作为参数。

# 语法格式
sudo gitlab-backup restore BACKUP=时间戳

# 实际例子(假设文件名为 1701234567_2023_11_29_15.0.2_gitlab_backup.tar)
sudo gitlab-backup restore BACKUP=1701234567_2023_11_29_15.0.2

# 对于旧版本
# sudo gitlab-rake gitlab:backup:restore BACKUP=1701234567_2023_11_29_15.0.2

执行过程:

系统会列出将要恢复的数据表。

提示 This task will now rebuild the authorized_keys file. 按 yes 继续。

最后提示 Put GitLab into an endless loop to restart? 按 yes 重启服务。
3. 恢复配置文件(如果必要)
如果你是在新机器上恢复,或者原配置文件丢失:

# 1. 停止服务
sudo gitlab-ctl stop

# 2. 恢复配置文件
sudocp /root/gitlab-config-backup/gitlab.rb /etc/gitlab/
sudocp /root/gitlab-config-backup/gitlab-secrets.json /etc/gitlab/

# 3. 重新配置并启动
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
4. 验证恢复结果
恢复完成后,进行基础验证:

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

# 检查数据库迁移(确保没有遗留问题)
sudo gitlab-rake db:migrate

# 清理过期的进程(可选)
sudo gitlab-rake cache:clear

最后,打开浏览器访问 GitLab,确认项目和用户数据是否完整。

七、常见问题与注意事项

  1. 版本必须一致:备份和恢复的 GitLab 版本必须相同(例如都是 15.0.2)。如果版本不同,恢复会报错或导致数据损坏。

  2. 备份空间:确保备份目录所在分区有足够的磁盘空间。GitLab 备份文件大小通常与 /var/opt/gitlab 目录大小相当。

  3. 恢复时长的预估:如果数据量很大(例如几十 GB),恢复过程可能需要 10-30 分钟,请耐心等待,不要中断进程。

  4. 恢复后权限问题:如果恢复后发现无法通过 SSH 访问仓库,可能需要重新生成 authorized_keys 文件:

    sudo gitlab-rake gitlab:shell:setup
  5. 使用绝对路径:

    在 cron 脚本中,建议使用命令的绝对路径来避免环境变量问题:

    which gitlab-backup
    # 通常输出 /usr/bin/gitlab-backup

最新文章

随机文章