我们如何更改正在运行的 GitLab 安装的 URL?
Posted
技术标签:
【中文标题】我们如何更改正在运行的 GitLab 安装的 URL?【英文标题】:How do we change the URL of a working GitLab install? 【发布时间】:2013-10-27 16:17:46 【问题描述】:我已经设置并且我们正在运行 GitLab v6.0.1 的默认安装(我们也即将升级)。这是一个“生产”设置,完全按照本指南进行操作:
https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md
现在,我们如何安全地更改有效安装的 URL?
显然我们的网址很长,我们想出了一个新网址。我编辑了许多配置文件,“应用程序状态检查”报告一切正常。我已重新启动服务器以确保一切正常。
我可以通过我们原来的 SSL 很好地访问 nginx。我可以浏览 GitLab 站点、创建存储库等。我可以很好地分叉和提交。
一切似乎都还好;但是,由于这对我来说不是本地环境,所以我想仔细检查一下我是否已经完成了重命名 GitLab 站点的所有操作。
我编辑的文件是:
/etc/hosts
127.0.0.1 localhost
10.0.0.10 wake.domain.com wake
10.0.0.10 git.domain.com git
/home/git/gitlab/config/gitlab.yml
production: &base
gitlab:
host: git.domain.com
/home/git/gitlab-shell/config.yml
gitlab_url: "https://git.domain.com"
^- yes, we are on SSL and that is working, even on a new URL
/etc/nginx/sites-available/gitlab
server
server_name git.domain.com
【问题讨论】:
综合安装用户:The process is different. 【参考方案1】:你做的一切都是正确的!
您还可以更改电子邮件配置,具体取决于电子邮件服务器是否也是同一台服务器。邮件配置在gitlab.yml 中,用于 GitLab 发送的邮件以及管理员邮箱。
【讨论】:
我想知道这一点,因为我将发件人电子邮件(和另一封电子邮件)设置为从我们位于不同域的全球开发人员组电子邮件别名发送。比如:devs@domain-2.com。原因是允许开发人员点击回复以对拉取请求或其他一般电子邮件进行 cmets。 回来将此标记为答案,因为自从我在上面进行了这些更改后,GitLab 一直运行良好。【参考方案2】:实际上,这并不完全正确。我来到这个页面,试图自己回答这个问题,因为我们正在将生产 GitLab 服务器从 http://
转换为 https://
并且 大多数 东西都按上述方式工作,但是当你登录到 @ 987654323@,一切看起来都很好......除了当您浏览到项目或存储库时,它会显示 SSH 和 HTTP 指令......它显示“http”并且它显示的指令也显示“http”。
我发现还有一些东西要编辑:
/home/git/gitlab/config/gitlab.yml
production: &base
gitlab:
host: git.domain.com
# Also edit these:
port: 443
https: true
...
和
/etc/nginx/sites-available/gitlab
server
server_name git.domain.com;
# Also edit these:
listen 443 ssl;
ssl_certificate /etc/ssl/certs/somecert.crt;
ssl_certificate_key /etc/ssl/private/somekey.key;
...
【讨论】:
感谢 Edward 的评论(您发布了对这个问题的答案,实际上它是对上面@Razer 的不同答案的评论)。您可能想要编辑您的答案(评论)以说明您为其他人使用的版本。但是,自从我发布这个问题以来,我们已经成功地使用了 GitLab,只进行了这些更改。我们可以浏览整个团队的存储库和项目 - 完全通过 SSL 在我们的公司网络中进行。 我知道,但另一个答案被标记为已接受的答案。所以我故意不想对此发表评论,因为这不会引起注意。发布另一个答案更加明显。我正在使用最新的 gitlab-shell 1.8.0 和 gitlab 6.4 稳定版。我们也可以完全通过 https 和 ssh 工作。但我们必须记住,每次我们将指令或 URL 从 Web 界面复制并粘贴到 git 客户端时,都将 http 替换为 https。 在我看来,您错过了其中一个配置文件中的 URL。在我最初的问题/描述中的“移动”之前,我们只使用 HTTPS 并故意禁用 HTTP。因此,仅将其作为 HTTPS 使我们能够按照发布的说明无缝地移动。但是,如果您运行的是混合模式 http/https 环境,则很可能需要编辑一些额外的行。 感谢您的评论,但是 (a) 我仔细检查了我是否进行了上述答案中引用的更改。 (b) 我安装了以下程序,并重新按照该程序确保我更改了 URL 所在的每个位置。 (c) 我们不仅将 http 更改为 https,还更改了主机名。主机名更改有效,这意味着配置文件修改成功。 (d) 我对你的设置持怀疑态度。你能在你的 gitlab 中浏览到一个项目,并在顶部显示 SSH 和 HTTP URL,在 ssh 和 http 之间切换,看看它显示的 URL 是“http”还是“https”? 这个答案现在模棱两可。您说“实际上,这并不完全正确。” 但是什么是“this”?您指的是问题中的某些内容吗?其他答案之一?【参考方案3】:GitLab 综合
对于 Omnibus 安装,情况略有不同。
Omnibus 安装中的正确位置是:
/etc/gitlab/gitlab.rb
external_url 'http://gitlab.example.com'
最后,您需要执行 sudo gitlab-ctl reconfigure
和 sudo gitlab-ctl restart
以便应用更改。
我在错误的地方进行了更改,结果被吹走了。
不正确的路径是:
/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
/var/opt/gitlab/.gitconfig
/var/opt/gitlab/nginx/conf/gitlab-http.conf
注意以下警告:
# This file is managed by gitlab-ctl. Manual changes will be
# erased! To change the contents below, edit /etc/gitlab/gitlab.rb
# and run `sudo gitlab-ctl reconfigure`.
【讨论】:
我在内部服务器上有 GitLab Omnibus,但可以通过不同的 URL 从 Internet 访问。/etc/gitlab/gitlab.rb
中的 external_url
选项是设置 URL 的正确位置,以便项目 Git/HTTP URL 正确。
此外,在此更改后并运行 gitlab-ctl reconfigure 后,您必须重新启动服务器才能进行 nginx 重新配置。
你是对的,这是更改这些设置的唯一也是最好的地方。剩下的就生成了。
@Dejv 您不必重新启动。重启nginx服务应该就够了。
感谢@JonathonReinhart 为我完成这项工作,但首先不要忘记做sudo gitlab-ctl stop unicorn
和sudo gitlab-ctl stop sidekiq
【参考方案4】:
这方面的详细说明对我很有帮助,located here。
Jonathon Reinhart 已经回答了关键位,编辑 /etc/gitlab/gitlab.rb,更改 external_url 然后运行 sudo gitlab-ctl reconfigure; sudo gitlab-ctl restart
但是我需要更进一步,上面链接的文档对此进行了解释。所以我最终得到的结果如下:
external_url 'https://gitlab.toilethumor.com'
nginx['ssl_certificate'] = "/www/ssl/star_toilethumor.com-chained.crt"
nginx['ssl_certificate_key'] = "/www/ssl/star_toilethumor.com.key"
nginx['proxy_set_headers'] =
"X-Forwarded-Proto" => "http",
"CUSTOM_HEADER" => "VALUE"
在上面,我已经明确声明了我的 SSL 好东西在这台服务器上的位置。然后当然是
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
另外,当您将综合包切换到 https 时,捆绑的 nginx 将仅在端口 443 上提供服务。由于我的所有内容都是通过反向代理访问的,因此这部分可能很重要。
当我经历这个时,我搞砸了一些东西,它有助于找到实际的 nginx 日志,这引导我到那里:
sudo gitlab-ctl tail nginx
【讨论】:
【参考方案5】:更新/etc/gitlab/gitlab.rb
中的external_url
参数后不要忘记清除缓存,否则您现有的项目克隆 URL 仍将显示您的旧主机名。
更改主机名的简单 3 步过程如下
更新/etc/gitlab/gitlab.rb
中的external_url
参数
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-rake cache:clear
参考:
https://forum.gitlab.com/t/clone-url-wont-change/21692/6
【讨论】:
以上是关于我们如何更改正在运行的 GitLab 安装的 URL?的主要内容,如果未能解决你的问题,请参考以下文章
如果前一个管道中正在运行相同的作业,如何等待 GitLab 作业?
更改数据目录 gitlab 以将 repos 存储在其他地方