1. 为什么选择GitLab作为版本控制平台
在当今软件开发领域,版本控制系统已经成为团队协作的标配工具。GitLab作为一个开源的Git仓库管理平台,相比其他同类产品具有几个显著优势:
首先,GitLab提供了完整的DevOps生命周期管理能力。从代码托管、CI/CD流水线到安全扫描和监控,GitLab提供了一站式解决方案。这对于中小型团队尤其有价值,可以避免集成多个工具带来的复杂性。
其次,GitLab的社区版(CE)功能已经非常完善。它包含了代码审查、问题跟踪、Wiki文档等核心功能,完全能够满足大多数团队的基本需求。而企业版(EE)则提供了更高级的安全合规和项目管理功能。
从部署方式来看,GitLab支持多种安装方案:
- Omnibus包安装(最简单)
- Docker容器化部署
- 源码编译安装(最灵活)
- 云托管服务(免维护)
提示:对于生产环境,建议至少配置4核CPU和4GB内存。GitLab对资源要求较高,特别是当用户量增加时。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 安装前的环境准备
2.1 系统要求检查
在开始安装前,需要确保系统满足以下最低要求:
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 2核 | 4核 |
| 内存 | 4GB | 8GB |
| 存储 | 10GB | 50GB |
| 操作系统 | Ubuntu 18.04+ / CentOS 7+ | Ubuntu 22.04 LTS |
运行以下命令检查系统资源:
bash复制free -h # 查看内存
df -h # 查看磁盘空间
lscpu # 查看CPU信息
2.2 依赖项安装
GitLab需要一些基础依赖包才能正常运行。对于Ubuntu系统,执行:
bash复制sudo apt update
sudo apt install -y curl openssh-server ca-certificates postfix
对于Postfix邮件服务的配置,选择"Internet Site"模式,并设置正确的域名。这将用于GitLab的系统通知邮件发送。
注意:如果系统已经运行了其他邮件服务(如Sendmail),需要先卸载它们以避免端口冲突。
2.3 防火墙配置
确保防火墙允许以下端口:
bash复制sudo ufw allow http
sudo ufw allow https
sudo ufw allow ssh
sudo ufw enable
对于SELinux系统(如CentOS),需要额外配置:
bash复制sudo setsebool -P httpd_can_network_connect on
3. 使用Omnibus包安装GitLab
3.1 添加GitLab仓库
首先添加官方仓库并安装:
bash复制curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
对于CentOS/RHEL系统,使用对应的RPM脚本:
bash复制curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
3.2 执行安装命令
安装最新稳定版(替换yourdomain.com为你的实际域名):
bash复制sudo EXTERNAL_URL="http://yourdomain.com" apt install gitlab-ce
安装完成后会看到GitLab的ASCII艺术logo,表示安装成功。
3.3 初始配置
运行以下命令重新配置GitLab:
bash复制sudo gitlab-ctl reconfigure
这个过程会:
- 生成初始管理员密码(存储在/etc/gitlab/initial_root_password)
- 配置Nginx、PostgreSQL等组件
- 启动所有必需的服务
重要:首次登录后立即修改root密码,因为初始密码文件24小时后会自动删除。
4. 基础配置与优化
4.1 访问GitLab Web界面
在浏览器中访问配置的EXTERNAL_URL(如http://yourdomain.com)。使用以下凭据登录:
- 用户名:root
- 密码:/etc/gitlab/initial_root_password文件中的密码
4.2 修改管理员密码
登录后立即前往"Profile Settings" → "Password"修改root账户密码。这是安全最佳实践。
4.3 配置SMTP邮件服务
默认的Postfix可能不适合生产环境。编辑/etc/gitlab/gitlab.rb配置外部SMTP:
ruby复制gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.example.com"
gitlab_rails['smtp_port'] = 587
gitlab_rails['smtp_user_name'] = "your@email.com"
gitlab_rails['smtp_password'] = "yourpassword"
gitlab_rails['smtp_domain'] = "example.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
然后重新配置:
bash复制sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
4.4 性能调优
对于资源有限的服务器,可以调整/etc/gitlab/gitlab.rb中的以下参数:
ruby复制unicorn['worker_processes'] = 2 # 默认为CPU核心数
sidekiq['concurrency'] = 5 # 后台任务并发数
postgresql['shared_buffers'] = "256MB" # 数据库缓存
5. 常见问题排查
5.1 502错误处理
如果访问GitLab出现502错误,通常是因为服务未完全启动。检查服务状态:
bash复制sudo gitlab-ctl status
常见原因和解决方案:
- 内存不足:增加swap空间或升级服务器
- 端口冲突:检查是否有其他服务占用了80/443端口
- Nginx配置错误:运行
sudo gitlab-ctl tail nginx查看日志
5.2 备份与恢复
创建完整备份:
bash复制sudo gitlab-rake gitlab:backup:create
备份文件默认存储在/var/opt/gitlab/backups。恢复备份:
bash复制sudo gitlab-rake gitlab:backup:restore BACKUP=备份文件名
5.3 升级GitLab版本
升级前务必先备份。升级步骤:
bash复制sudo apt update
sudo apt install gitlab-ce
sudo gitlab-ctl reconfigure
6. 高级部署选项
6.1 Docker部署方案
对于容器化环境,可以使用官方Docker镜像:
bash复制docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22: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
6.2 高可用架构
对于生产环境,建议考虑以下高可用方案:
- PostgreSQL数据库集群
- Redis哨兵模式
- GitLab应用服务器负载均衡
- 共享存储(如NFS)用于仓库数据
6.3 离线安装方法
在没有互联网连接的环境中,可以下载离线包安装:
- 从官网下载对应版本的.deb/.rpm包
- 传输到目标服务器
- 使用dpkg或rpm命令安装:
bash复制或sudo dpkg -i gitlab-ce-XXX.debbash复制sudo rpm -ivh gitlab-ce-XXX.rpm
7. 安全加固措施
7.1 定期更新
GitLab会定期发布安全更新。订阅安全公告,并及时应用补丁:
bash复制sudo apt update && sudo apt upgrade gitlab-ce
7.2 配置备份策略
设置自动备份(添加到crontab):
bash复制0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
同时备份配置文件:
bash复制/etc/gitlab/gitlab.rb
/etc/gitlab/gitlab-secrets.json
7.3 监控与日志
GitLab内置了Prometheus监控。访问http://yourdomain.com/-/metrics查看指标。关键监控项包括:
- 内存使用率
- 响应时间
- 后台作业队列长度
查看实时日志:
bash复制sudo gitlab-ctl tail # 所有组件
sudo gitlab-ctl tail nginx # 仅Nginx
