温馨提示×

GitLab在Linux环境下如何部署

小樊
42
2025-12-28 07:40:04
栏目: 智能运维

Linux环境下部署GitLab的完整指南

一 环境准备与规划

  • 操作系统与权限:建议使用Ubuntu/DebianCentOS/RHEL等主流发行版,具备root或sudo权限。
  • 资源建议:至少2GB RAM(推荐4GB+),可用存储≥20GB,并预留后续增长空间。
  • 网络与端口:确保可访问互联网,规划访问域名或IP,开放HTTP 80/HTTPS 443/SSH 22端口(如与已有服务冲突,可映射为高位端口)。
  • 主机名与解析:设置清晰的主机名(如gitlab.example.com),并在DNS或**/etc/hosts**做好解析。
  • 安全基线:启用防火墙(UFW/Firewalld),仅暴露必要端口;规划备份目录与保留策略。

二 安装方式一 Omnibus包安装 Ubuntu或CentOS

  • 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. 配置外部访问地址(将域名或IP替换为你的实际地址)
      echo “external_url ‘http://your_domain_or_ip’” | sudo tee -a /etc/gitlab/gitlab.rb
    4. 应用配置并启动
      sudo gitlab-ctl reconfigure
      sudo gitlab-ctl start
  • CentOS/RHEL
    1. 安装依赖
      sudo yum install -y curl policycoreutils-python openssh-server postfix
      sudo systemctl enable --now postfix
    2. 添加官方仓库并安装
      curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
      sudo yum install -y gitlab-ce
    3. 配置外部访问地址
      echo “external_url ‘http://your_domain_or_ip’” | sudo tee -a /etc/gitlab/gitlab.rb
    4. 应用配置并启动
      sudo gitlab-ctl reconfigure
      sudo gitlab-ctl start
  • 防火墙放行示例
    Ubuntu:sudo ufw allow 80,443,22/tcp && sudo ufw enable
    CentOS:sudo firewall-cmd --permanent --add-service=http --add-service=https && sudo firewall-cmd --reload

三 安装方式二 Docker与Docker Compose

  • Docker单容器运行(示例将宿主机5480→805443→4435022→22
    sudo docker run --detach
    –hostname gitlab.example.com
    –publish 5480:80 --publish 5443:443 --publish 5022:22
    –name gitlab
    –restart always
    –volume /srv/gitlab/config:/etc/gitlab
    –volume /srv/gitlab/logs:/var/log/gitlab
    –volume /srv/gitlab/data:/var/opt/gitlab
    gitlab/gitlab-ce:latest
  • Docker Compose(推荐,便于编排与持久化)
    version: “3.6” services: gitlab: image: gitlab/gitlab-ce:latest container_name: gitlab 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密码(容器首次启动后24小时内有效)
    docker exec -it gitlab cat /etc/gitlab/initial_root_password
  • 说明:如需EE版本,可将镜像更换为gitlab/gitlab-ee:latest;端口映射请与现有服务避免冲突。

四 首次访问与安全加固

  • 首次访问与初始化
    浏览器访问配置的external_url(如:http://your_domain_or_ip),按向导设置管理员密码;默认管理员为root
  • 启用HTTPS与证书
    方案A(推荐):使用Let’s Encrypt自动签发
    Ubuntu/Debian:sudo apt-get install -y certbot python3-certbot-nginx
    CentOS/RHEL:sudo yum install -y certbot
    获取证书后,在**/etc/gitlab/gitlab.rb**中配置:
    nginx[‘redirect_http_to_https’] = true
    nginx[‘ssl_certificate’] = “/etc/letsencrypt/live/your_domain/fullchain.pem”
    nginx[‘ssl_certificate_key’] = “/etc/letsencrypt/live/your_domain/privkey.pem”
    然后执行:sudo gitlab-ctl reconfigure && sudo gitlab-ctl restart
    方案B:使用已有证书,将证书路径写入gitlab.rb并reconfigure。
  • 邮件通知SMTP(示例为端口587 STARTTLS
    在**/etc/gitlab/gitlab.rb**中配置:
    gitlab_rails[‘smtp_enable’] = true
    gitlab_rails[‘smtp_address’] = “smtp.example.com”
    gitlab_rails[‘smtp_port’] = 587
    gitlab_rails[‘smtp_user_name’] = “your_email@example.com”
    gitlab_rails[‘smtp_password’] = “your_password”
    gitlab_rails[‘smtp_domain’] = “example.com”
    gitlab_rails[‘smtp_authentication’] = “login”
    gitlab_rails[‘smtp_enable_starttls_auto’] = true
    gitlab_rails[‘smtp_tls’] = false
    执行:sudo gitlab-ctl reconfigure(必要时重启)。

五 运维常用命令与备份恢复

  • 常用运维
    查看状态:sudo gitlab-ctl status
    重启/停止:sudo gitlab-ctl restart / sudo gitlab-ctl stop
    重新配置(修改gitlab.rb后必执行):sudo gitlab-ctl reconfigure
    查看日志:sudo gitlab-ctl tail(可加服务名,如:sudo gitlab-ctl tail nginx)
    版本信息:gitlab-ctl version
  • 备份与恢复(Omnibus)
    备份:sudo /opt/gitlab/bin/gitlab-backup create(或旧版本:sudo gitlab-rake gitlab:backup:create)
    恢复:将备份文件放到**/var/opt/gitlab/backups/**,执行
    sudo /opt/gitlab/bin/gitlab-backup restore BACKUP=timestamp_of_backup
    注意:恢复前确保版本一致,恢复后按需重启服务。
  • 离线安装提示(无外网环境)
    在有网环境下载gitlab-ce/gitlab-ee的RPM/DEB包及依赖,拷贝至离线主机后本地安装;安装完成后同样通过gitlab-ctl reconfigure初始化。

0