Anolis OS release 8.10安装gitlab

一、系统版本

二、添加仓库

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

还有中方法:

# https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/el/8/config_file.repo

拷贝上面文件内容到gitlab服务器新建git-ce.repo文件里。

复制代码
# cat /etc/yum.repos.d/git-ce.repo 
[gitlab_gitlab-ce]
name=gitlab_gitlab-ce
baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/el/8/$basearch
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://packages.gitlab.com/gpgkey/gpg.key
       https://packages.gitlab.com/gpgkey/gitlab/3D645A26AB9FBD22.pub.gpg
       https://packages.gitlab.com/gpgkey/gitlab/CB947AD886C8E8FD.pub.gpg
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

[gitlab_gitlab-ce-source]
name=gitlab_gitlab-ce-source
baseurl=https://packages.gitlab.com/gitlab/gitlab-ce/el/8/SRPMS
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://packages.gitlab.com/gpgkey/gpg.key
       https://packages.gitlab.com/gpgkey/gitlab/3D645A26AB9FBD22.pub.gpg
       https://packages.gitlab.com/gpgkey/gitlab/CB947AD886C8E8FD.pub.gpg
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

三、安装及配置

如果在线下载慢,可以先下载,在上传服务器。最后使用下面命令部署:

yum localinstall gitlab-ce-19.0.1-ce.0.el8.x86_64.rpm

使修改后的配置文件生效并重启:

# gitlab-ctl reconfigure

启动命令:

gitlab-ctl start

防火墙配置:

# firewall-cmd --permanent --add-service=http

firewall-cmd --permanent --add-service=https

firewall-cmd --reload

查看密码:

cat /etc/gitlab/initial_root_password

登录:

四、登录后的配置

登录后的提示,按实际需求修改:

禁止新用户注册:

配置当前账户语言:

修改时区

修改密码

全局禁止ci/cd:

特定项目开启或者关闭CI/CD:

五、备份

复制代码
## cat gitlab_full_backup.sh 
#!/bin/bash
set -euo pipefail

# ================== 变量定义 ==================
BACKUP_DIR="/var/opt/gitlab/backups"            # GitLab 默认数据备份目录
CONFIG_BACKUP_DIR="/data/backup/gitlab_config"  # 配置文件独立备份目录
KEEP_DAYS=7                                     # 保留天数
DATE=$(date +%Y%m%d_%H%M%S)                     # 时间戳
LOG_FILE="${BACKUP_DIR}/backup_${DATE}.log"     # 日志文件

# 确保目录存在
mkdir -p "$CONFIG_BACKUP_DIR" "$BACKUP_DIR"

echo "[$(date)] ========== GitLab 完整备份开始 ==========" | tee -a "$LOG_FILE"

# ================== 1. 数据备份 (代码、账户、权限、CI产物) ==================
echo "[$(date)] 正在执行数据备份..." | tee -a "$LOG_FILE"
# CRON=1: 静默模式,减少输出;SKIP=db: 如需跳过数据库可添加,此处保留完整备份
/opt/gitlab/bin/gitlab-backup create CRON=1 >> "$LOG_FILE" 2>&1

if [ $? -eq 0 ]; then
    echo "[$(date)] ✅ 数据备份成功" | tee -a "$LOG_FILE"
else
    echo "[$(date)] ❌ 数据备份失败,请检查日志: $LOG_FILE" | tee -a "$LOG_FILE"
    exit 1
fi

# ================== 2. 配置文件备份 (gitlab.rb + secrets) ==================
echo "[$(date)] 正在备份配置文件..." | tee -a "$LOG_FILE"
CONFIG_TAR="${CONFIG_BACKUP_DIR}/gitlab_config_${DATE}.tar.gz"
tar -czf "$CONFIG_TAR" \
    /etc/gitlab/gitlab.rb \
    /etc/gitlab/gitlab-secrets.json \
    >> "$LOG_FILE" 2>&1

if [ $? -eq 0 ]; then
    echo "[$(date)] ✅ 配置文件已打包至: $CONFIG_TAR" | tee -a "$LOG_FILE"
else
    echo "[$(date)] ❌ 配置文件备份失败" | tee -a "$LOG_FILE"
fi

# ================== 3. 清理超过7天的旧备份 ==================
echo "[$(date)] 正在清理 ${KEEP_DAYS} 天前的旧备份..." | tee -a "$LOG_FILE"

# 清理数据备份
find "$BACKUP_DIR" -name "*_gitlab_backup.tar" -type f -mtime +${KEEP_DAYS} -delete
# 清理配置备份
find "$CONFIG_BACKUP_DIR" -name "gitlab_config_*.tar.gz" -type f -mtime +${KEEP_DAYS} -delete
# 清理旧日志
find "$BACKUP_DIR" -name "backup_*.log" -type f -mtime +${KEEP_DAYS} -delete

echo "[$(date)] ✅ 旧备份清理完成" | tee -a "$LOG_FILE"
echo "[$(date)] ========== 所有备份任务完成 ==========" | tee -a "$LOG_FILE"

sh -x gitlab_full_backup.sh

添加任务计划:

crontab -l

0 2 * * * /opt/scripts/gitlab_full_backup.sh

六、关键注意事项

事项 说明
版本一致性 恢复时目标 GitLab 版本必须与备份时完全一致(包括小版本号),否则恢复会失败
secrets.json 重要性 gitlab-secrets.json 包含数据库加密密钥、2FA 密钥等,丢失则备份数据无法解密恢复
异地容灾 当前脚本仅做本地备份,强烈建议在脚本末尾追加 rsync/scp 将备份同步到远程 NAS 或对象存储
备份期间性能 备份过程会占用大量磁盘 I/O,务必安排在业务低峰期(如凌晨)执行
定期恢复演练 建议每月至少进行一次恢复测试,验证备份文件的完整性和可用性
Omnibus 路径 脚本中的 /opt/gitlab/bin/gitlab-backup 适用于 Omnibus 安装方式;若为源码安装,请使用 bundle exec rake gitlab:backup:create
相关推荐
daemon.qiang10 天前
国内虚拟机对接 Freedesktop:Fork xserver、自建 Runner 与提交 MR 实战
linux·ubuntu·centos·gitlab·开源软件
snow@li14 天前
服务器运维:K3S 下 Jenkins ↔ GitLab 的 CI/CD 闭环 / 访问成功
运维·gitlab·jenkins
旧梦星轨16 天前
Git Flow 工作流实践
git·gitee·gitlab·github
旧梦星轨16 天前
Github Flow 与 Gitlab Flow工作流实践解读
gitlab·github
极小狐19 天前
干掉流水线里的长期密钥:用 OIDC 让 CI/CD 与云以临时凭证对接
microsoft·ci/cd·gitlab·devops·ci·cd·oidc
snow@li19 天前
服务器运维:阿里云安装软件gitlab/智能体协助安装/智能体协同运维
运维·gitlab
极小狐20 天前
CI 流水线提速实战:缓存设计与依赖代理的工程实践
缓存·ci/cd·gitlab·devops
DevOps老兵21 天前
AI Infra实战11:模型部署Pipeline——CI/CD自动化
人工智能·ci/cd·ai·自动化·gitlab
极小狐21 天前
从复制粘贴到可复用组件:极狐GitLab CI/CD 组件目录实战
java·ci/cd·gitlab·devops·组件化
极小狐21 天前
用 Flow 编排 Agent 智能体:极狐GitLab Duo 自定义工作流实战
ai·gitlab·agent·devops·flow·duo