在开始搭建GitLab之前,准备工作至关重要,直接关系到后续安装的顺利运行和长期使用的稳定性,首先需要选择合适的虚拟化平台,常见的有VMware Workstation、VirtualBox或KVM等,建议选择稳定版本并确保已安装虚拟化扩展(如Intel VT-x或AMD-V),虚拟机操作系统的选择上,推荐使用Ubuntu Server 20.04 LTS或22.04 LTS,两者均为长期支持版本,与GitLab官方兼容性较好,且社区文档丰富,硬件资源配置方面,由于GitLab对资源需求较高,建议至少分配2核CPU、4GB内存(推荐8GB)和50GB磁盘空间(SSD优先),若后续需要存储更多代码仓库或用户数据,可适当扩展磁盘容量,系统初始化步骤包括更新软件包列表(sudo apt update && sudo apt upgrade -y)、配置静态IP地址(避免重启后IP变化导致访问问题,可通过编辑/etc/netplan/01-netcfg.yaml实现,例如设置addresses: [192.168.1.100/24]、gateway4: 192.168.1.1、nameservers: addresses: [8.8.8.8, 114.114.114.114],然后运行sudo netplan apply)、安装必要依赖(sudo apt install -y curl openssh-server ca-certificates tzdata)以及设置时区(sudo dpkg-reconfigure tzdata选择Asia/Shanghai),完成这些准备工作后,虚拟机环境已就绪,可进入GitLab的安装环节。

GitLab官方仓库安装
GitLab提供了官方的软件仓库,支持通过包管理器进行安装,这种方式便于后续维护和升级,添加GitLab的官方GPG密钥以确保软件包来源可信,执行命令curl -fsSL https://packages.gitlab.com/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/gitlab-archive-keyring.gpg,根据虚拟机的操作系统版本添加GitLab仓库,以Ubuntu 22.04为例,运行echo "deb [signed-by=/usr/share/keyrings/gitlab-archive-keyring.gpg] https://packages.gitlab.com/gitlab/gitlab-ee/debian/ bookworm main" | sudo tee /etc/apt/sources.list.d/gitlab_gitlab-ee.list(若使用Ubuntu 20.04,将bookworm替换为bullseye),添加仓库后,更新本地软件包缓存(sudo apt update),即可开始安装GitLab Enterprise Edition(EE,社区版CE也可通过类似方式添加仓库),执行sudo apt install gitlab-ee,安装过程会自动下载并配置GitLab的核心组件,包括Nginx、PostgreSQL、Redis等,耗时较长(视网络和硬件性能而定,通常10-30分钟),期间请勿中断操作。
GitLab基础配置与启动
安装完成后,需要对GitLab进行基础配置以适应虚拟机环境,核心配置文件位于/etc/gitlab/gitlab.rb,建议先备份原始配置(sudo cp /etc/gitlab/gitlab.rb /etc/gitlab/gitlab.rb.bak),最重要的配置项是external_url,用于指定GitLab的访问URL,需设置为虚拟机的IP地址或域名(例如external_url 'http://192.168.1.100',若后续配置HTTPS,需改为https://并指定证书路径),若虚拟机通过NAT网络与宿主机通信,且宿主机需要访问GitLab,需确保虚拟机IP与宿主机在同一网段,或端口转发已正确配置,修改配置文件后,需使配置生效,执行sudo gitlab-ctl reconfigure,该命令会根据gitlab.rb生成GitLab的运行配置并启动相关服务,启动完成后,可通过sudo gitlab-ctl status检查服务状态,若所有组件(如nginx、postgresql、redis、gitlab-workhorse等)均显示run,则启动成功,打开浏览器,访问http://虚拟机IP,首次访问会要求设置root管理员密码(密码长度至少8位),设置完成后即可登录GitLab Web界面。

资源优化与安全加固
默认情况下,GitLab会根据系统资源自动分配内存,但虚拟机资源有限,建议手动优化以避免性能问题,编辑/etc/gitlab/gitlab.rb,添加或修改memory_limit参数(例如memory_limit 2GB,根据实际内存调整,建议不超过系统内存的50%),并配置swap分区(若系统未配置,可通过sudo fallocate -l 2G /swapfile && sudo chmod 600 /swapfile && sudo mkswap /swapfile && sudo swapon /swapfile && echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab创建2GB swap),安全加固方面,首先修改默认root密码(登录后进入Admin Area→Overview→Users→root修改),并禁用root用户直接注册(/etc/gitlab/gitlab.rb中设置gitlab_rails['disable_sign_up'] = true),配置防火墙规则,仅开放必要端口(如80/HTTP、443/HTTPS、22/SSH),执行sudo ufw allow 80/tcp && sudo ufw allow 443/tcp && sudo ufw allow 22/tcp && sudo ufw enable,建议启用HTTPS(即使虚拟机内网使用),可通过Let’s Encrypt免费证书或自签名证书实现,自签名证书配置示例:external_url 'https://gitlab.example.com',nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt",nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key",并将证书文件放置到指定目录后执行sudo gitlab-ctl reconfigure。
常见问题与维护
搭建过程中可能遇到一些典型问题:若访问GitLab页面出现502错误,通常因资源不足导致,可检查内存使用情况(free -h),适当调整memory_limit或增加swap;若无法访问页面,确认防火墙是否开放端口、虚拟机网络是否连通(ping 192.168.1.100);若启动失败,查看日志(sudo gitlab-ctl tail或/var/log/gitlab/目录下各组件日志)定位错误,常见问题包括磁盘空间不足(df -h检查)、依赖包冲突等,日常维护方面,定期备份GitLab数据至关重要,可通过sudo gitlab-backup create创建备份(默认备份文件存放在/var/opt/gitlab/backups),备份策略建议每日全量备份+增量备份,并将备份文件异地存储,升级GitLab时,需先停止数据写入(sudo gitlab-ctl stop),执行备份后,通过sudo apt update && sudo apt install gitlab-ee升级,升级后运行sudo gitlab-ctl reconfigure并启动服务,定期清理日志和临时文件(sudo gitlab-rake gitlab:cleanup:logs)可释放磁盘空间,确保GitLab稳定运行。

通过以上步骤,即可在虚拟机中成功搭建功能完善的GitLab服务,虚拟机环境适合学习测试和小型团队使用,若需部署生产环境,建议考虑更高性能的服务器、集群化部署(如GitLab HA)以及专业的监控方案,搭建完成后,可创建项目、添加用户、配置CI/CD等,充分发挥GitLab在代码管理和协作开发中的作用。














