ubuntu上gitlab如何设置域名
小樊
37
2025-12-20 18:38:25
Ubuntu 上 GitLab 设置域名
一 前置准备
- 准备一个可解析到服务器公网 IP 的域名(如:gitlab.example.com),在域名解析商处添加 A 记录 指向该 IP。
- 开放服务器安全组/防火墙端口:80/443(HTTP/HTTPS),以及用于仓库克隆的 22(SSH)。如使用云服务器,请在控制台放行对应端口。
二 Omnibus 包方式配置域名
- 编辑配置文件
打开 /etc/gitlab/gitlab.rb,设置外部访问地址(将域名替换为你的实际域名):
external_url “https://gitlab.example.com”
说明:所有 GitLab 配置均在此文件中修改,避免直接改动其他自动生成的配置文件。
- 配置 HTTPS(推荐 Let’s Encrypt 自动申请)
在 /etc/gitlab/gitlab.rb 中启用内置证书签发:
letsencrypt[‘enable’] = true
保存后执行:sudo gitlab-ctl reconfigure
等待完成后,GitLab 会自动申请并配置 Let’s Encrypt 证书,启用 HTTPS。
- 手动证书(可选)
若使用已有证书,放置证书文件(如:/etc/gitlab/ssl/gitlab.crt 与 /etc/gitlab/ssl/gitlab.key),并在 gitlab.rb 中配置:
external_url “https://gitlab.example.com”
nginx[‘redirect_http_to_https’] = true
nginx[‘ssl_certificate’] = “/etc/gitlab/ssl/gitlab.crt”
nginx[‘ssl_certificate_key’] = “/etc/gitlab/ssl/gitlab.key”
nginx[‘ssl_dhparam’] = “/etc/gitlab/ssl/dhparams.pem”
保存后执行:sudo gitlab-ctl reconfigure。
三 Docker 部署方式配置域名
- 运行容器时通过 –hostname 指定域名,并映射 80/443/22 端口:
docker run --detach \
–hostname gitlab.example.com \
–publish 443:443 --publish 80:80 --publish 22:22 \
–name gitlab \
–restart always \
–volume /srv/gitlab/config:/etc/gitlab \
–volume /srv/gitlab/logs:/var/log/gitlab \
–volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
容器内的 GitLab 将使用上述 hostname 作为访问域名。
- 在容器内启用 HTTPS(两种常见做法)
- 内置自动证书(推荐):在挂载的 /srv/gitlab/config/gitlab.rb 中设置
external_url “https://gitlab.example.com”
letsencrypt[‘enable’] = true
然后执行:docker exec -it gitlab gitlab-ctl reconfigure
- 手动证书:将证书挂载到容器内(如 /etc/gitlab/ssl/),并在 gitlab.rb 中配置证书路径与重定向,最后执行 reconfigure 使配置生效。
四 验证与常见问题
- 访问测试
打开浏览器访问 https://gitlab.example.com,确认能正常打开页面且证书有效(锁标识)。如需 SSH 克隆,使用形如 git@gitlab.example.com:group/project.git 的地址。
- 配置生效与排错
每次修改 /etc/gitlab/gitlab.rb 后需执行:sudo gitlab-ctl reconfigure;如需重启服务可执行:sudo gitlab-ctl restart。
若访问异常,检查:域名 DNS A 记录 是否生效、服务器 80/443/22 端口是否开放、证书路径与权限是否正确。