温馨提示×

GitLab与Linux如何完美结合

小樊
37
2025-12-02 18:39:51
栏目: 智能运维

**在 Linux 上把 GitLab 用顺手的关键,是选对部署方式、打通身份认证、配好 HTTPS 与邮件、接入 CI/CD,并落实备份与运维。**下面给出一套从零到一的可落地方案与最佳实践。

部署选型与环境准备

  • 部署方式
    • 原生安装:在 Ubuntu/DebianCentOS/RHEL 上用官方仓库安装,适合需要深度定制与内网合规的场景。
    • Docker Compose:一条命令拉起 GitLab,配置与数据卷分离,便于迁移与备份。
  • 资源建议
    • 至少 2 核 CPU、4 GB 内存、20 GB 磁盘(生产环境建议更高规格)。
  • 基础依赖与服务
    • 安装 curl、openssh-server、ca-certificates、tzdata/perl;邮件可选 postfix
    • 开放 80/443(HTTP/HTTPS)与 22(SSH)端口,确保外网或内网可达。

安装与快速配置

  • 原生安装(Ubuntu/Debian 示例)
    1. 安装依赖 sudo apt-get update && sudo apt-get install -y curl openssh-server ca-certificates tzdata perl
    2. 添加仓库并安装 curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash sudo apt-get install -y gitlab-ce
    3. 配置 external_url 并生效 sudo editor /etc/gitlab/gitlab.rb

      例如:external_url ‘https://gitlab.example.com’

      sudo gitlab-ctl reconfigure && sudo gitlab-ctl start
  • Docker Compose(示例) version: ‘3.6’ services: gitlab: image: gitlab/gitlab-ce:17.4.5-ce.0 restart: always hostname: ‘gitlab.example.com’ ports: - ‘5480:80’ - ‘5443:443’ - ‘5022:22’ volumes: - ‘./config:/etc/gitlab’ - ‘./logs:/var/log/gitlab’ - ‘./data:/var/opt/gitlab’ shm_size: ‘256m’ 启动:docker-compose up -d 获取初始 root 密码:docker exec -it gitlab cat /etc/gitlab/initial_root_password
  • 常用运维命令 sudo gitlab-ctl start|stop|restart|status sudo gitlab-ctl tail(查看日志,定位问题)

安全与网络配置

  • HTTPS 与证书
    • 使用 Let’s Encrypt 获取免费证书(以 Nginx 为例): sudo apt-get install certbot python3-certbot-nginx # Debian/Ubuntu sudo certbot certonly --nginx -d gitlab.example.com
    • 在 /etc/gitlab/gitlab.rb 中启用重定向与证书路径: nginx[‘redirect_http_to_https’] = true nginx[‘ssl_certificate’] = “/etc/letsencrypt/live/gitlab.example.com/fullchain.pem” nginx[‘ssl_certificate_key’] = “/etc/letsencrypt/live/gitlab.example.com/privkey.pem” sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart
  • 防火墙放行
    • UFW:sudo ufw allow ‘Nginx Full’ && sudo ufw allow ‘OpenSSH’
    • firewalld:sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload
  • 邮件通知(SMTP)
    • 在 /etc/gitlab/gitlab.rb 中开启并填写你的 SMTP 参数,例如端口 587/TLS,然后执行 sudo gitlab-ctl reconfigure。

Linux 客户端与 CI/CD 协同

  • SSH 免密与克隆
    • 生成密钥:ssh-keygen -t ed25519 -C “you@example.com”
    • 添加公钥到 GitLab(个人设置 → SSH Keys),测试:ssh -T git@gitlab.example.com
    • 克隆:git clone git@gitlab.example.com:group/project.git
  • 分支与提交
    • git checkout -b feature/x
    • git add . && git commit -m “feat: add x”
    • git push -u origin feature/x
  • Runner 与流水线
    • 在 Linux 服务器注册 Runner(选择 ShellDocker 执行器),在项目中放置 .gitlab-ci.yml: stages:
      • build
      • test
      • deploy build: stage: build script: ./gradlew build || make build test: stage: test script: ./gradlew test || make test deploy: stage: deploy script: ./deploy.sh only:
        • main
    • 将 Runner 标签与项目可见性匹配,确保作业调度到目标主机。

备份恢复与日常运维

  • 备份与恢复
    • 创建备份(会包含数据库、仓库、上传等):sudo gitlab-backup create(旧版本可用:gitlab-rake gitlab:backup:create)
    • 恢复(先安装同版本 GitLab,停止服务,再恢复):sudo gitlab-backup restore BACKUP=timestamp(旧版本:gitlab-rake gitlab:backup:restore)
    • 建议将备份文件与 /etc/gitlab/gitlab-secrets.json 一并离线保存,确保加密与令牌一致。
  • 监控与日志
    • 查看整体状态:sudo gitlab-ctl status
    • 实时日志:sudo gitlab-ctl tail(可 tail nginx、sidekiq、postgresql 等组件)
  • 升级与变更
    • 遵循官方升级路径,先在测试环境验证;变更 /etc/gitlab/gitlab.rb 后务必执行 sudo gitlab-ctl reconfigure。

0