logo

GitLab部署全流程指南:从安装到运维的详细教程

作者:da吃一鲸8862025.09.26 16:39浏览量:0

简介:本文提供GitLab社区版(CE)在Linux服务器上的完整部署方案,涵盖系统准备、安装配置、运维管理及故障排查等核心环节,帮助开发者快速搭建私有化代码托管平台。

一、部署前系统准备与环境要求

1.1 服务器配置建议

推荐使用Ubuntu 20.04 LTS/CentOS 7+系统,硬件配置建议:4核CPU、8GB内存、100GB磁盘空间(存储库增长需预留空间)。磁盘建议采用SSD以提升I/O性能,网络带宽需保证100Mbps以上以支持多用户并发操作。

1.2 依赖环境安装

  1. # Ubuntu系统安装依赖
  2. sudo apt update
  3. sudo apt install -y curl openssh-server ca-certificates tzdata perl
  4. # CentOS系统安装依赖
  5. sudo yum install -y curl policycoreutils-python-utils openssh-server
  6. sudo yum install -y postfix # 邮件通知依赖
  7. sudo systemctl enable postfix && sudo systemctl start postfix

1.3 防火墙配置

开放必要端口:80(HTTP)、443(HTTPS)、22(SSH)、8080(可选Prometheus监控):

  1. sudo ufw allow 80/tcp
  2. sudo ufw allow 443/tcp
  3. sudo ufw allow 22/tcp
  4. sudo ufw enable # Ubuntu系统
  5. # CentOS使用firewalld
  6. sudo firewall-cmd --permanent --add-service={http,https,ssh}
  7. sudo firewall-cmd --reload

二、GitLab安装方式详解

2.1 Omnibus包安装(推荐)

  1. # Ubuntu/Debian系统
  2. curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
  3. sudo EXTERNAL_URL="http://your-server-ip" apt-get install gitlab-ce
  4. # CentOS/RHEL系统
  5. curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
  6. sudo EXTERNAL_URL="http://your-server-ip" yum install -y gitlab-ce

2.2 Docker容器部署

  1. version: '3'
  2. services:
  3. gitlab:
  4. image: gitlab/gitlab-ce:latest
  5. container_name: gitlab
  6. restart: always
  7. environment:
  8. GITLAB_OMNIBUS_CONFIG: |
  9. external_url 'http://your-server-ip'
  10. gitlab_rails['gitlab_shell_ssh_port'] = 2222
  11. ports:
  12. - "80:80"
  13. - "443:443"
  14. - "2222:22"
  15. volumes:
  16. - ./config:/etc/gitlab
  17. - ./logs:/var/log/gitlab
  18. - ./data:/var/opt/gitlab

2.3 源码编译安装(高级用户)

需准备Ruby 2.7+、Go 1.13+、Node.js 12+环境,编译过程约30-60分钟:

  1. sudo apt install -y build-essential zlib1g-dev libyaml-dev libssl-dev \
  2. libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl
  3. git clone https://gitlab.com/gitlab-org/gitlab-foss.git -b 15-x-stable
  4. cd gitlab-foss
  5. bundle install --deployment --without development test postgres aws kerberos
  6. bundle exec rake gitlab:setup RAILS_ENV=production

三、核心配置与优化

3.1 配置文件解析

主配置文件位于/etc/gitlab/gitlab.rb,关键参数说明:

  1. # 外网访问配置
  2. external_url 'https://gitlab.example.com'
  3. # 邮件服务配置
  4. gitlab_rails['smtp_enable'] = true
  5. gitlab_rails['smtp_address'] = "smtp.example.com"
  6. gitlab_rails['smtp_port'] = 587
  7. # 备份配置
  8. gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
  9. gitlab_rails['backup_archive_permissions'] = 0644

3.2 性能调优参数

  • 数据库缓存postgresql['shared_buffers'] = "256MB"(根据内存调整)
  • Unicorn工作进程unicorn['worker_processes'] = 4(CPU核心数×2)
  • Sidekiq并发数sidekiq['concurrency'] = 25

3.3 HTTPS证书配置

使用Let’s Encrypt免费证书:

  1. sudo apt install -y certbot python3-certbot-nginx
  2. sudo certbot --nginx -d gitlab.example.com
  3. # 修改gitlab.rb指向证书
  4. external_url 'https://gitlab.example.com'
  5. nginx['ssl_certificate'] = "/etc/letsencrypt/live/gitlab.example.com/fullchain.pem"
  6. nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/gitlab.example.com/privkey.pem"

四、运维管理最佳实践

4.1 定期备份策略

  1. # 手动备份
  2. sudo gitlab-rake gitlab:backup:create
  3. # 自动化备份(crontab示例)
  4. 0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1

4.2 升级流程

  1. # 查看可用版本
  2. sudo apt-cache madison gitlab-ce
  3. # 升级操作
  4. sudo apt update && sudo apt install gitlab-ce
  5. # 升级后检查
  6. sudo gitlab-ctl status
  7. sudo gitlab-rake gitlab:check SANITIZE=true

4.3 监控方案

  • Prometheus集成:通过/etc/gitlab/gitlab.rb启用
    1. prometheus_monitoring['enable'] = true
  • Grafana仪表盘:导入GitLab官方模板(ID:9977)

五、常见问题解决方案

5.1 502错误排查

  1. 检查Unicorn进程状态:sudo gitlab-ctl tail unicorn
  2. 内存不足时调整swap:
    1. sudo fallocate -l 4G /swapfile
    2. sudo chmod 600 /swapfile
    3. sudo mkswap /swapfile
    4. sudo swapon /swapfile

5.2 邮件发送失败

测试邮件配置:

  1. sudo gitlab-rails console
  2. ActionMailer::Base.deliveries.clear
  3. Notify.test_email('user@example.com', 'Test Subject', 'Test Body').deliver_now

5.3 Git拉取缓慢优化

  1. 启用Nginx静态资源缓存:
    1. location /assets/ {
    2. expires 1y;
    3. add_header Cache-Control "public";
    4. }
  2. 配置Git存储加速:
    1. git_data_dirs({
    2. "default" => {
    3. "path" => "/var/opt/gitlab/git-data",
    4. "git_path" => "/opt/gitlab/embedded/bin/git"
    5. }
    6. })

六、进阶功能部署

6.1 CI/CD runner配置

  1. # 注册Runner
  2. sudo gitlab-runner register \
  3. --url https://gitlab.example.com/ \
  4. --registration-token REGISTRATION_TOKEN \
  5. --executor docker \
  6. --docker-image alpine:latest \
  7. --description "docker-runner"

6.2 镜像仓库集成

  1. # 在gitlab.rb中启用容器镜像仓库
  2. registry['enable'] = true
  3. registry_external_url 'https://registry.example.com'
  4. nginx['listen_port'] = 5050 # 镜像仓库专用端口

6.3 高可用架构

采用三节点架构:

  1. 数据库主从复制(PostgreSQL
  2. Redis集群配置
  3. 共享存储(NFS/Ceph)

本教程覆盖了GitLab部署的全生命周期管理,从基础安装到企业级高可用配置。实际部署时建议先在测试环境验证配置,生产环境建议使用自动化运维工具(如Ansible)实现标准化部署。根据GitLab官方数据,合理配置的实例可支持500+并发用户稳定运行,建议每季度进行一次健康检查和性能优化。

相关文章推荐

发表评论