如何在Linux CentOS 7上搭建私有Git代码托管平台

一、技术选型与平台优势

在分布式版本控制领域,Git已成为行业标准解决方案。相较于依赖公有云服务,自建代码托管平台具有三大核心优势:

  1. 数据主权控制:所有代码存储在本地服务器,避免第三方平台的数据收集风险
  2. 安全合规保障:满足金融、医疗等行业的等保要求,支持自定义加密策略
  3. 性能优化空间:可根据团队规模配置硬件资源,避免网络延迟影响开发效率

主流开源方案中,GitLab Community Edition(CE)提供完整功能集,包含代码仓库、CI/CD流水线、Wiki文档等功能。其模块化设计支持从20人小团队到千人级企业的扩展需求,且与主流开发工具链深度集成。

二、环境准备与依赖安装

2.1 系统基础配置

建议使用全新安装的CentOS 7.9系统,配置最低要求:

  • CPU:2核以上
  • 内存:4GB(测试环境可降至2GB)
  • 存储:40GB可用空间(根据代码量调整)

执行系统更新命令:

  1. sudo yum update -y
  2. sudo yum install -y curl policycoreutils-python openssh-server
  3. sudo systemctl enable sshd
  4. sudo systemctl start sshd

2.2 防火墙配置

开放必要端口并配置SELinux策略:

  1. sudo firewall-cmd --permanent --add-service=http
  2. sudo firewall-cmd --permanent --add-service=https
  3. sudo firewall-cmd --reload
  4. sudo setsebool -P httpd_can_network_connect 1

2.3 依赖组件安装

安装Postfix邮件服务(用于通知)和必要开发工具:

  1. sudo yum install postfix -y
  2. sudo systemctl enable postfix
  3. sudo systemctl start postfix
  4. # 安装编译依赖(可选,用于源码安装)
  5. sudo yum install -y gcc openssl-devel libyaml-devel libffi-devel readline-devel zlib-devel gdbm-devel ncurses-devel

三、GitLab CE部署流程

3.1 官方仓库配置

添加GitLab官方YUM仓库:

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

3.2 安装与初始化

执行安装命令(指定版本可避免自动升级问题):

  1. # 安装最新稳定版
  2. sudo EXTERNAL_URL="http://your-server-ip" yum install -y gitlab-ce
  3. # 或指定版本(示例)
  4. # sudo yum install -y gitlab-ce-15.11.8-ce.0.el7.x86_64

安装完成后执行初始化配置:

  1. sudo gitlab-ctl reconfigure

该过程需5-10分钟,完成后可通过浏览器访问http://服务器IP,首次登录需设置管理员密码。

3.3 基础配置优化

通过Web界面完成初始设置:

  1. 修改root用户密码
  2. 配置SMTP邮件服务(用于密码重置等通知)
  3. 设置备案信息(如需)
  4. 配置备份策略(建议每日自动备份)

四、安全加固方案

4.1 访问控制

  • 网络隔离:通过防火墙限制访问IP范围
  • 双因素认证:启用Google Authenticator或U2F设备
  • 会话管理:设置30分钟无操作自动登出

4.2 数据加密

  • 启用HTTPS访问(使用Let’s Encrypt免费证书):

    1. sudo letsencrypt certonly --standalone -d git.example.com
    2. sudo vim /etc/gitlab/gitlab.rb
    3. # 修改external_url为https://git.example.com
    4. # 添加nginx['ssl_certificate']和nginx['ssl_certificate_key']配置
    5. sudo gitlab-ctl reconfigure
  • 存储加密:建议对代码存储目录启用LUKS磁盘加密

4.3 审计日志

配置日志轮转策略并集成至SIEM系统:

  1. # 查看GitLab日志路径
  2. sudo gitlab-ctl tail
  3. # 配置日志集中存储(示例使用rsyslog)
  4. sudo vim /etc/rsyslog.d/gitlab.conf
  5. # 添加内容:
  6. # *.* /var/log/gitlab/remote.log
  7. sudo systemctl restart rsyslog

五、高级功能配置

5.1 CI/CD流水线

  1. 配置Runner:

    1. # 注册共享Runner
    2. sudo gitlab-runner register \
    3. --url http://git.example.com \
    4. --registration-token YOUR_TOKEN \
    5. --executor shell
  2. 创建.gitlab-ci.yml示例:
    ```yaml
    stages:

    • build
    • test

build_job:
stage: build
script:

  1. - echo "Building project..."
  2. - make build

test_job:
stage: test
script:

  1. - echo "Running tests..."
  2. - make test
  1. #### 5.2 容器化部署(可选)
  2. 对于生产环境,建议使用容器化部署方案:
  3. ```bash
  4. # 安装Docker
  5. sudo curl -fsSL https://get.docker.com | sh
  6. sudo usermod -aG docker git
  7. # 使用官方镜像启动
  8. docker run -d \
  9. --hostname git.example.com \
  10. --publish 443:443 --publish 80:80 --publish 2222:22 \
  11. --name gitlab \
  12. --restart always \
  13. --volume /srv/gitlab/config:/etc/gitlab \
  14. --volume /srv/gitlab/logs:/var/log/gitlab \
  15. --volume /srv/gitlab/data:/var/opt/gitlab \
  16. gitlab/gitlab-ce:latest

六、日常维护指南

6.1 升级流程

  1. 备份数据:

    1. sudo gitlab-rake gitlab:backup:create
  2. 执行升级:
    ```bash

    查看可升级版本

    sudo yum list —showduplicates gitlab-ce

升级到指定版本

sudo yum upgrade gitlab-ce-15.11.9-ce.0.el7
sudo gitlab-ctl reconfigure
```

6.2 性能监控

建议配置以下监控指标:

  • Unicorn工作进程状态
  • Sidekiq队列积压情况
  • PostgreSQL数据库连接数
  • 存储空间使用率

可通过Prometheus+Grafana方案实现可视化监控,具体配置参考官方文档。

6.3 故障排查

常见问题处理:

  1. 502错误:检查Puma/Unicorn进程状态
  2. 邮件发送失败:验证SMTP配置及防火墙规则
  3. Git操作超时:调整git_timeout参数(默认60秒)

七、替代方案对比

对于不同规模团队,可考虑以下方案:
| 方案 | 适用场景 | 资源需求 |
|———————|——————————————|———————|
| GitLab CE | 中小型团队,需要完整CI/CD | 2核4GB起 |
| Gitea | 轻量级需求,树莓派等设备 | 1核1GB |
| 自建Gogs | 极简部署,无CI需求 | 512MB内存 |
| 云原生方案 | 大型分布式团队 | 依赖K8s环境 |

通过本文的详细指导,开发者可在CentOS 7系统上快速搭建安全可靠的私有Git平台。该方案既保留了GitLab的完整功能集,又通过定制化配置满足不同场景的安全需求,特别适合对数据主权有严格要求的企业级用户。建议定期备份数据并测试恢复流程,确保业务连续性。