阿里云PayPal充值 阿里云服务器部署GitLab环境

阿里云国际 / 2026-04-17 13:50:09

阿里云服务器部署GitLab环境:不翻车、不求人、不重启三次的实战指南

别急着点退出——你不是第一个被GitLab安装搞崩溃的人,也不会是最后一个。但这次,咱不靠玄学重启,不抄三份配置改四遍host,不把/etc/gitlab/gitlab.rb当《道德经》反复参悟。本文专治:「安装完打不开80端口」「重载配置后502满天飞」「HTTPS配完浏览器狂报不安全」「连root密码都输不对」——这些不是你的错,是官方文档没告诉你阿里云ECS默认关掉了啥、SELinux默不作声干了啥、还有那个藏在gitlab-ctl reconfigure背后偷偷摸摸改了你Nginx监听地址的“热心邻居”。

一、先问灵魂三连:你真需要自己搭GitLab?

GitLab.com免费版够用?GitHub私有库+Actions也香?没错——但如果你公司要求代码不出内网、审计要留痕、CI/CD要调用本地GPU训练模型、或者单纯想在控制台敲gitlab-ctl tail看日志时有种当家做主的踏实感……那恭喜,你已通过资格审核,可以继续往下看了。

二、阿里云ECS选型:别省那几十块,血泪教训

GitLab不是Hello World,它是个吃内存的“电子貔貅”。官方最低要求2核4G,但实测:2核4G跑起来像老牛拉破车,新建项目卡顿,合并请求页面加载3秒起步。建议直接上4核8G起步,系统盘选100GB SSD云盘(GitLab日志+备份+容器镜像堆起来比你家猫的毛还难清理)。操作系统锁定Ubuntu 22.04 LTS——别碰CentOS Stream,别信“Debian更轻量”,Omnibus包对Ubuntu适配最稳,连apt源都给你预配好了。

三、初始化:给服务器做个“术前消毒”

登录ECS,先执行这三板斧:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl wget gnupg2 openssh-server ca-certificates postfix

注意:postfix安装时会弹出图形界面让你选邮件配置——选Internet Site,然后域名填你自己的(比如gitlab.yourcompany.com),别瞎填localhost。这步漏了,后续GitLab发注册邮件会静音消失。

四、正餐开始:GitLab Omnibus一键安装(其实是四步)

官方脚本看似一行,实则暗藏玄机:

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
sudo EXTERNAL_URL="https://gitlab.yourcompany.com" apt-get install -y gitlab-ce

⚠️ 关键来了:EXTERNAL_URL必须带https://,且域名必须能DNS解析到你ECS公网IP!别写http,别写localhost,别写192.168.x.x——GitLab会按这个URL生成所有内部链接,写错=全站404。

五、配置文件:不是改完就完事,是改完再念三遍咒语

打开/etc/gitlab/gitlab.rb,重点修改这几处(其余保持默认):

# 1. 强制使用HTTPS(哪怕还没证书,先占坑)
nginx['redirect_http_to_https'] = true

# 2. 指定SSL证书路径(先占位,等下生成)
nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.yourcompany.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.yourcompany.com.key"

# 3. 防火墙友好模式(阿里云安全组+UFW双保险)
nginx['listen_port'] = 80
nginx['listen_https'] = false  # 先关掉Nginx自带HTTPS,用反向代理或Let's Encrypt接管

# 4. 邮件发信配置(示例用腾讯企业邮箱)
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "your_app_password"
gitlab_rails['smtp_domain'] = "yourcompany.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

保存后,执行神圣三连:

sudo gitlab-ctl reconfigure  # 编译配置,启动服务
sudo gitlab-ctl restart # 确保全部进程活过来
sudo gitlab-ctl status # 查看哪些服务绿灯亮着(重点关注unicorn, nginx, sidekiq)

六、域名与SSL:让浏览器不再画红叉

买个域名(.com/.cn都行),在阿里云云解析里添加A记录指向ECS公网IP。然后用Certbot申请免费证书:

sudo apt install -y certbot python3-certbot-nginx
sudo mkdir -p /etc/gitlab/ssl
sudo certbot certonly --standalone -d gitlab.yourcompany.com

证书生成后,软链到GitLab指定路径:

sudo ln -sf /etc/letsencrypt/live/gitlab.yourcompany.com/fullchain.pem /etc/gitlab/ssl/gitlab.yourcompany.com.crt
sudo ln -sf /etc/letsencrypt/live/gitlab.yourcompany.com/privkey.pem /etc/gitlab/ssl/gitlab.yourcompany.com.key

再次sudo gitlab-ctl reconfigure——这次Nginx会自动启用HTTPS并重定向HTTP请求。

七、阿里云专属排雷清单(亲测踩过)

  • 阿里云PayPal充值 安全组没开443端口?——去ECS控制台→安全组→入方向规则,加一条TCP 443,源IP填0.0.0.0/0(测试期);
  • UFW防火墙挡路?——sudo ufw status查状态,若active则:sudo ufw allow OpenSSH && sudo ufw allow 80 && sudo ufw allow 443 && sudo ufw enable
  • root密码忘了?——别重装!执行:sudo gitlab-rake "gitlab:password:reset[root]",按提示输入新密码;
  • 访问显示502 Bad Gateway?——大概率Nginx没起来,sudo gitlab-ctl tail nginx看错误日志,八成是证书路径错了或权限不足(sudo chmod 600 /etc/gitlab/ssl/*.key);
  • 邮件收不到?检查sudo gitlab-rails console进控制台,执行Notify.test_email('[email protected]', 'Test', 'Message').deliver_now看报错,90%是SMTP密码没开“客户端专用密码”。

八、最后一步:验证 & 收工

浏览器打开https://gitlab.yourcompany.com,首次访问会跳转到密码重置页。用用户名root,按提示设新密码。登录后——创建群组、新建项目、推送代码,感受一下属于你自己的代码宇宙中心。

顺手记个运维小抄:
• 日志在哪?sudo gitlab-ctl tail(实时)或/var/log/gitlab/(文件)
• 备份命令?sudo gitlab-backup create(自动存/var/opt/gitlab/backups/
• 升级GitLab?sudo apt update && sudo apt install gitlab-ce(Omnibus包会自动reconfigure)

部署完成那一刻,你可能不会欢呼,但会默默关掉第7个Stack Overflow标签页,端起凉透的茶,对着终端里绿色的run: nginx: (pid 12345) 12345s; run露出一丝疲惫而欣慰的微笑——毕竟,世上哪有什么“一键部署”,不过是有人替你把所有sudorm -rf都试错了三遍。

下载.png
Telegram售前客服
客服ID
@cloudcup
联系
Telegram售后客服
客服ID
@yanhuacloud
联系