在现代化软件开发流程中,代码托管与协作平台至关重要,GitLab 作为集代码管理、CI/CD、项目管理于一体的综合平台,深受开发者青睐,通过虚拟机部署 GitLab,既能满足团队协作需求,又能灵活控制资源成本,本文将详细介绍在虚拟机中配置 GitLab 的完整流程,涵盖环境准备、安装配置、性能优化及常见问题处理,助您快速搭建稳定的私有代码仓库。

环境准备:虚拟机与系统要求
在开始部署前,需合理规划虚拟机资源配置,GitLab 对系统资源要求较高,建议至少分配 4 核 CPU、8GB 内存及 100GB 磁盘空间(若需存储大量代码或构建产物,可适当增加内存至 16GB 以上,磁盘扩展至 200GB),操作系统推荐选择 CentOS 7+、Ubuntu 20.04 LTS 或 Debian 10,确保系统稳定性,关闭防火墙或开放必要端口(HTTP/HTTPS、SSH、MySQL/PostgreSQL 默认端口),避免网络连接问题,虚拟机网络模式建议选择桥接或 NAT,确保能正常访问外部仓库(如需克隆外部依赖)。
安装依赖与基础配置
GitLab 运行依赖多个基础组件,需提前安装,以 Ubuntu 20.04 为例,首先更新系统软件包列表:
sudo apt update && sudo apt upgrade -y
安装必要的依赖包,包括 curl、policycoreutils、openssh-server 等:
sudo apt install -y curl openssh-server ca-certificates postfix
postfix 用于邮件通知,安装时选择“Internet Site”并配置域名,随后添加 GitLab 官方软件源并安装:
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash sudo apt install -y gitlab-ce
若为 CentOS 系统,可使用 EPEL 源并替换安装命令为 sudo yum install -y gitlab-ce-ce。

核心配置:初始化 GitLab 服务
安装完成后,需修改 GitLab 配置文件以适应实际环境,编辑 /etc/gitlab/gitlab.rb 文件,重点关注以下参数:
- external_url:配置 GitLab 的访问 URL,需与虚拟机 IP 或域名匹配,
http://192.168.1.100或https://gitlab.example.com(若使用 HTTPS,需提前配置 SSL 证书)。 - gitlab_rails[‘gitlab_shell_ssh_port’]:若 SSH 端口非默认 22,需修改此处。
- postgresql[‘shared_buffers’] 或 redis[‘maxmemory’]:根据内存大小调整数据库和缓存服务资源,8GB 内存可设置
shared_buffers为 2GB。
保存配置后,执行 sudo gitlab-ctl reconfigure 使配置生效,该过程会自动初始化 PostgreSQL 数据库、Redis 缓存及 Nginx 配置,耗时约 5-10 分钟,完成后,通过 sudo gitlab-ctl status 检查服务状态,确保所有组件(nginx、postgresql、redis、gitlab-workhorse)正常运行。
访问与用户初始化
首次访问 GitLab 时,需设置管理员密码,打开浏览器输入配置的 external_url,进入密码重置页面,设置 root 用户密码(需包含大小写字母、数字及特殊字符,长度不少于 8 位),登录后,建议立即修改默认邮箱(Profile Settings → Account),并创建团队用户。
为优化项目管理,可调整全局默认设置:
- 注册与登录:关闭“Sign-up enabled”避免随意注册,或启用“Domain whitelist”限制注册邮箱域名。
- 仓库设置:在 Admin Area → Settings → Repository 中调整默认分支名、最大文件大小等参数。
- CI/CD 配置:若需启用持续集成,可配置 Runners(虚拟机可配置为 Shared Runner,需注册到 GitLab 实例)。
性能优化与安全加固
GitLab 在运行过程中可能因资源不足导致性能下降,需定期优化:

- 磁盘监控:GitLab 仓库数据存储在
/var/opt/gitlab/git-data,可通过sudo gitlab-ctl du查看目录占用,及时清理冗余日志(/var/log/gitlab)或打包旧仓库。 - 数据库维护:定期执行
sudo gitlab-rake gitlab:db:maintenance优化数据库性能,避免因数据量过大查询缓慢。 - 备份策略:配置自动备份,编辑
/etc/gitlab/gitlab.rb添加:gitlab_rails['backup_keep_time'] = 604800 # 保留 7 天(单位:秒)
手动备份命令:
sudo gitlab-backup create,备份文件存储在/var/opt/gitlab/backups。
安全方面,建议:
- 更新系统及 GitLab 到最新版本:
sudo apt update && sudo apt install gitlab-ce - 限制 SSH 访问:通过
/etc/ssh/sshd_config禁用 root 登录或仅允许特定 IP 访问。 - 启用 HTTPS:若对外提供服务,可使用 Let’s Encrypt 免费证书或上传自有证书,避免数据传输泄露。
常见问题处理
部署过程中可能遇到以下问题:
- 502 错误:通常因内存不足或服务启动失败导致,可通过
sudo gitlab-ctl restart重启服务,或检查系统日志(/var/log/gitlab/gitlab-rails/production.log)定位错误。 - 仓库克隆失败:检查 SSH 端口是否开放,或尝试使用 HTTP 协议克隆(需确保 external_url 可访问)。
- 备份恢复失败:恢复时需确保 GitLab 版本与备份版本一致,并执行
sudo gitlab-backup restore BACKUP=xxx(xxx 为备份文件名)。
通过以上步骤,您可在虚拟机中成功搭建功能完善的 GitLab 私有仓库,合理配置资源与安全策略,不仅能满足团队日常开发需求,还能为后续扩展 CI/CD、容器化部署等功能奠定基础,助力企业实现高效、安全的代码协作管理。


















