温馨提示×

ubuntu上gitlab部署方案

小樊
55
2025-09-21 10:18:31
栏目: 智能运维

Ubuntu上GitLab部署方案

GitLab是开源代码托管平台,支持版本控制、CI/CD等功能。在Ubuntu上部署GitLab主要有包管理安装(适合需要系统集成的场景)和Docker容器化部署(适合快速部署、环境隔离的场景)两种方式,以下是详细方案:

一、包管理安装(apt方式)

1. 系统准备

  • 更新系统sudo apt update && sudo apt upgrade -y
  • 安装依赖sudo apt install -y curl openssh-server ca-certificates tzdata perl(curl用于下载包,openssh-server用于Git SSH协议,ca-certificates用于HTTPS连接)

2. 添加GitLab官方仓库

  • 导入GitLab GPG密钥:curl https://packages.gitlab.com/gpg.key | sudo apt-key add -
  • 添加GitLab APT仓库:sudo apt install -y curl,然后运行curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash(替换为最新脚本地址)

3. 安装GitLab Community Edition(CE)

  • 执行安装命令:sudo EXTERNAL_URL="http://yourdomain.com" apt install -y gitlab-ce(将yourdomain.com替换为服务器IP或域名,如http://192.168.1.100

4. 初始配置与访问

  • 设置root密码:安装完成后,GitLab会自动启动。访问http://yourdomain.com,首次登录需设置root用户密码(密码存储在/etc/gitlab/initial_root_password,24小时后自动删除,需立即修改)
  • 常用命令
    • 启动服务:sudo gitlab-ctl start
    • 停止服务:sudo gitlab-ctl stop
    • 重启服务:sudo gitlab-ctl restart
    • 查看状态:sudo gitlab-ctl status
    • 重新配置(修改/etc/gitlab/gitlab.rb后):sudo gitlab-ctl reconfigure

二、Docker容器化部署

1. 系统准备

  • 更新系统sudo apt update && sudo apt upgrade -y
  • 安装Docker和Docker Compose
    • Docker:sudo apt install -y docker-ce docker-ce-cli containerd.io(推荐使用官方仓库安装最新版)
    • Docker Compose:sudo curl -L "https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose,然后sudo chmod +x /usr/local/bin/docker-compose

2. 配置持久化存储

  • 创建数据目录:mkdir -p ~/gitlab/{config,logs,data}(用于存储GitLab配置、日志和数据,避免容器删除后数据丢失)

3. 编写Docker Compose文件

  • 创建~/gitlab/docker-compose.yml,内容如下:
    version: '3.6'
    services:
      gitlab:
        image: gitlab/gitlab-ce:latest
        container_name: gitlab
        restart: always
        hostname: 'gitlab.yourdomain.com'  # 替换为域名或IP
        environment:
          GITLAB_OMNIBUS_CONFIG: |
            external_url 'http://gitlab.yourdomain.com'  # 外部访问地址
            gitlab_rails['time_zone'] = 'Asia/Shanghai'  # 时区设置
        ports:
          - "8080:80"  # 避免与宿主机Nginx冲突,默认80改为8080
          - "443:443"
          - "2222:22"  # 避免与宿主机SSH冲突,默认22改为2222
        volumes:
          - ./config:/etc/gitlab
          - ./logs:/var/log/gitlab
          - ./data:/var/opt/gitlab
        shm_size: '256m'  # 共享内存,避免Sidekiq内存不足
    

    注:若宿主机已有服务占用80/22端口,需修改ports中的端口映射(如8080:802222:22

4. 启动GitLab容器

  • 进入目录:cd ~/gitlab
  • 启动容器:docker-compose up -d(后台运行)
  • 查看日志:docker-compose logs -f(监控启动进度,若出现端口冲突或依赖问题,可根据日志调整配置)

5. 初始配置与访问

  • 设置root密码:容器启动后,root密码存储在~/gitlab/config/initial_root_password,需立即修改(24小时后文件自动删除)
  • 访问GitLab:浏览器输入http://your-server-ip:8080(若修改了ports中的映射,需对应调整),使用root用户登录

三、常见问题解决

1. 端口冲突

  • 原因:宿主机已有服务占用GitLab需要的端口(如80、22)。
  • 解决:修改docker-compose.yml中的ports映射(如将80:80改为8080:8022:22改为2222:22),或停止占用端口的服务(如sudo systemctl stop apache2

2. 502 Bad Gateway错误

  • 原因:GitLab服务未正常启动,或Nginx反向代理配置错误。
  • 解决
    • 检查GitLab容器状态:docker-compose ps(确保gitlab服务为Up状态)。
    • 查看GitLab日志:docker-compose logs -f(定位具体错误,如数据库连接失败、端口冲突)。
    • 重启服务:docker-compose restart gitlab

3. HTTPS配置

  • 步骤
    1. 获取SSL证书(推荐使用Let’s Encrypt免费证书):sudo apt install -y certbot python3-certbot-nginx,然后sudo certbot --nginx -d yourdomain.com
    2. 修改/etc/gitlab/gitlab.rbexternal_url 'https://yourdomain.com',并添加nginx['ssl_certificate'] = "/etc/letsencrypt/live/yourdomain.com/fullchain.pem"nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/yourdomain.com/privkey.pem"
    3. 重新配置GitLab:sudo gitlab-ctl reconfigure(包管理安装);或修改docker-compose.yml中的GITLAB_OMNIBUS_CONFIG,添加SSL配置后docker-compose restart gitlab(Docker部署)

以上方案覆盖了Ubuntu上GitLab的主要部署方式,可根据需求选择。包管理安装适合需要与系统深度集成的场景,Docker部署适合快速迭代和环境隔离的场景。部署后需定期备份数据(包管理安装的备份命令:sudo gitlab-backup create;Docker部署的备份:复制~/gitlab/data目录),确保数据安全。

0