在阿里云 ECS 上搭建 GitLab 最稳妥的方式是使用官方提供的 Omnibus 安装包,配合安全组放行必要端口,适合中小团队私有代码托管。
先说结论:直接采用 Omnibus 包部署是最省心的方案,但必须重视实例规格、Swap 配置及 HTTPS 安全加固。
- 适合:需要完全掌控代码数据、有独立运维能力的团队或个人
- 先准备:至少 4GB 内存的 ECS 实例(2GB 必须配置 Swap),提前规划好域名并完成 DNS 解析
- 验收:通过 HTTPS 访问登录页,初始密码登录成功,并能完成一次 git clone 操作
前置准备与系统配置
1. 选择操作系统
推荐 Ubuntu 20.04/22.04 或 CentOS 7/8(注意 CentOS 7 已停服,建议选用 AlmaLinux/Rocky Linux 替代)。下文将分别提供对应的安装命令。
2. 配置 Swap 分区(关键)
GitLab 组件较多,2GB 内存实例在安装或运行时极易触发 OOM(内存溢出)。即使拥有 4GB 内存,也建议配置 2GB 以上 Swap 作为缓冲。
# 创建 2G Swap 文件
sudo fallocate -l 2G /swapfile
# 若 fallocate 不可用,改用 dd 命令:
# sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
# 设置权限并格式化
sudo chmod 600 /swapfile
sudo mkswap /swapfile
# 启用 Swap
sudo swapon /swapfile
# 验证是否生效
sudo free -h
# 设置开机自动挂载
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab3. 配置安全组
登录阿里云控制台,找到实例对应的安全组。入方向放行 TCP 80(HTTP 验证用)、443(HTTPS 业务用)和 22(SSH 管理)。若不开放 80/443 端口,GitLab 内置 Nginx 无法接收请求。
安装 GitLab CE
根据操作系统选择对应的安装源和命令。注意:安装阶段先不使用环境变量配置 URL,待安装完成后统一在配置文件中修改。
Ubuntu/Debian 系统
# 安装依赖并添加源
sudo apt-get update
sudo apt-get install -y curl openssh-server ca-certificates postfix
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
# 安装 GitLab CE(暂不配置外部 URL)
sudo apt-get install -y gitlab-ceCentOS/RHEL 系统
# 安装依赖并添加源
sudo yum install -y curl policycoreutils openssh-server openssh-clients postfix
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
# 安装 GitLab CE
sudo yum install -y gitlab-ce配置 HTTPS 与外部访问
安装完成后,默认配置为 HTTP 且监听 localhost。需编辑配置文件启用 HTTPS 并设置外部访问地址。
1. 编辑配置文件
执行 sudo vim /etc/gitlab/gitlab.rb,找到并修改以下配置项:
# 设置外部访问地址(必须使用域名,且 DNS 已解析到本机公网 IP)
external_url 'https://your-domain.com'
# 启用 Let's Encrypt 自动证书
letsencrypt['enable'] = true
letsencrypt['contact_email'] = 'your-email@example.com'
# 可选:禁用 HTTP 自动跳转前的测试,确认 HTTPS 正常后再开启
# nginx['redirect_http_to_https'] = true2. 重新配置生效
保存文件后,执行以下命令应用配置。此过程会申请证书并重启服务,耗时较长:
sudo gitlab-ctl reconfigure注意:启用 Let's Encrypt 前,务必确保域名已解析到当前 ECS 公网 IP,且安全组 80 端口开放,否则证书申请会失败。
验证服务可用性
1. 网页登录
在浏览器输入 https://your-domain.com。首次访问可能因自签名证书或 Let's Encrypt 刚生效需要刷新。使用用户名 root 登录。
2. 获取初始密码
若未修改过密码,初始 root 密码保存在以下文件中:
sudo cat /etc/gitlab/initial_root_password3. 本地克隆测试
登录后创建一个新项目,复制 HTTP/HTTPS 克隆地址。在本地终端执行:
git clone https://your-domain.com/namespace/project.git若能成功拉取代码,说明服务正常。
常见风险与排查
1. 内存不足导致启动失败
现象:gitlab-ctl reconfigure 过程中断或服务反复重启。
排查:执行 free -h 查看内存。若可用内存极低,检查 Swap 是否生效。建议生产环境至少 4GB 内存 + 2GB Swap。
2. 证书申请失败
现象:reconfigure 卡在 letsencrypt 步骤。
排查:检查域名 DNS 解析是否生效(ping your-domain.com),检查安全组 80 端口是否开放。若多次失败,可暂时关闭 letsencrypt['enable'],手动配置 Nginx 证书。
3. 邮件服务不可用
默认使用本地 Postfix 发送邮件,云厂商通常屏蔽 25 端口,导致密码重置邮件发不出去。
建议:生产环境配置 SMTP(如阿里云邮件推送)或在 gitlab.rb 中指定外部 SMTP 服务器。
4. 备份策略缺失
GitLab 数据至关重要,不要只依赖 ECS 快照。
建议:配置 gitlab-backup 定时任务,将备份文件上传到 OSS 或其他异地存储。命令示例:sudo gitlab-backup create。