阿里云PayPal充值 阿里云服务器部署GitLab环境
阿里云服务器部署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露出一丝疲惫而欣慰的微笑——毕竟,世上哪有什么“一键部署”,不过是有人替你把所有sudo和rm -rf都试错了三遍。


