Wie ändern wir die URL einer funktionierenden GitLab-Installation?


89

Ich habe eingerichtet und wir führen eine Standardinstallation von GitLab v6.0.1 aus (wir werden auch ein Upgrade durchführen). Es war ein "Produktions" -Setup, das genau dieser Anleitung folgte:

https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md

Wie können wir nun die URL einer funktionierenden Installation sicher ändern?

Anscheinend ist unsere URL sehr lang und wir haben eine neue URL gefunden. Ich habe eine Reihe von Konfigurationsdateien bearbeitet und in der Meldung "Anwendungsstatusprüfungen" wird angezeigt, dass alles in Ordnung ist. Ich habe den Server neu gestartet, um sicherzustellen, dass die Dinge noch funktionieren.

Ich kann über unser ursprüngliches SSL problemlos auf Nginx zugreifen. Ich kann die GitLab-Site durchsuchen, ein Repository erstellen usw. Ich kann mich gut teilen und festschreiben.

Es scheint alles in Ordnung zu sein; Da dies jedoch keine native Umgebung für mich ist, wollte ich überprüfen, ob ich alles getan habe, um eine GitLab-Site umzubenennen.

Die Dateien, die ich bearbeitet habe, sind:

/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

9
Omnibus-Installationsbenutzer: Der Prozess ist anders .
Jonathon Reinhart

Antworten:


29

Du hast alles richtig gemacht!

Sie können auch die E-Mail-Konfiguration ändern, je nachdem, ob der E-Mail-Server auch derselbe Server ist. Die E-Mail-Konfiguration befindet sich in gitlab.yml für die von GitLab gesendeten E- Mails sowie für die Administrator-E-Mail.


Ich habe mich darüber gewundert, weil ich festgelegt habe, dass die Von-E-Mail (und die andere E-Mail) von unserem globalen E-Mail-Alias ​​für Entwicklergruppen gesendet wird, der sich in einer anderen Domain befindet. Wie: devs@domain-2.com. Der Grund ist, dass Entwickler auf Antworten klicken können, um Kommentare zu Pull-Anfragen oder anderen allgemeinen E-Mails abzugeben.
eduncan911

2
Kam zurück, um dies als Antwort zu markieren, da GitLab gut funktioniert hat, seit ich diese Änderungen oben vorgenommen habe.
eduncan911

159

GitLab Omnibus

Bei einer Omnibus-Installation ist dies etwas anders.

Der richtige Ort in einer Omnibus-Installation ist:

/etc/gitlab/gitlab.rb
    external_url 'http://gitlab.example.com'

Schließlich müssen Sie ausführen sudo gitlab-ctl reconfigureund sudo gitlab-ctl restartso die Änderungen zu übernehmen.


Ich habe Änderungen an den falschen Stellen vorgenommen und sie wurden weggeblasen.

Die falschen Pfade sind:

/opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
/var/opt/gitlab/.gitconfig
/var/opt/gitlab/nginx/conf/gitlab-http.conf

Beachten Sie die folgenden Warnungen:

# 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`.

Ich habe GitLab Omnibus auf einem internen Server, aber über eine andere URL aus dem Internet erreichbar. Die external_urlOption in /etc/gitlab/gitlab.rbwar der richtige Ort, um die URL so einzustellen, dass die Git / HTTP-URLs des Projekts korrekt sind.
Matthew Clark

Nach dieser Änderung und nach dem Ausführen der Neukonfiguration von gitlab-ctl müssen Sie den Server neu starten, damit die Nginx-Neukonfiguration stattfinden kann.
Dejv

Sie haben Recht, dies ist der einzige und beste Ort, um diese Einstellungen zu ändern. Der Rest wird generiert.
Gefahr89

4
@Dejv Sie sollten nicht neu starten müssen. Ein Neustart des Nginx-Dienstes sollte ausreichen.
Jonathon Reinhart

Danke @JonathonReinhart diese Arbeit für mich, aber zuerst nicht vergessen zu tun sudo gitlab-ctl stop unicornundsudo gitlab-ctl stop sidekiq
Cyberguille

7

Eigentlich ist das NICHT ganz richtig. Ich bin auf dieser Seite angekommen und habe versucht, diese Frage selbst zu beantworten, da wir den Produktions-GitLab-Server von http://auf umstellen https://und die meisten Dinge wie oben beschrieben funktionieren, aber wenn Sie sich anmelden https://serverund alles gut aussieht ... außer wenn Sie zu einem Projekt navigieren oder Repository, und es zeigt die SSH- und HTTP-Anweisungen an ... Es heißt "http" und die angezeigten Anweisungen sagen auch "http".

Ich habe jedoch noch einige Dinge zum Bearbeiten gefunden:

/home/git/gitlab/config/gitlab.yml
  production: &base
    gitlab:
      host: git.domain.com

      # Also edit these:
      port: 443
      https: true
...

und

/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;

...

Vielen Dank, Edward, für deinen Kommentar (du hast eine Antwort auf diese Frage gepostet, wenn es sich tatsächlich um einen Kommentar zu einer anderen Antwort von @Razer oben handelt). Möglicherweise möchten Sie Ihre Antwort (Kommentar) bearbeiten, um anzugeben, auf welcher Version Sie sich für andere befinden. Aber ich habe GitLab nur mit diesen Änderungen erfolgreich verwendet, seit ich diese Frage gestellt habe. Wir können Repos und Projekte im gesamten Team durchsuchen - vollständig über SSL ausschließlich in unserem Unternehmensnetzwerk.
eduncan911

2
Ich weiß, aber die andere Antwort wird als akzeptierte Antwort markiert. Ich wollte es also absichtlich nicht kommentieren, da das keine Beachtung findet. Das Posten einer anderen Antwort ist etwas ausgeprägter. Ich bin auf der neuesten Gitlab-Shell 1.8.0 und Gitlab 6.4 stabil. Wir können auch vollständig über https und ssh arbeiten. Wir müssen jedoch daran denken, http jedes Mal durch https zu ersetzen, wenn wir Anweisungen oder URLs von der Weboberfläche zum Git-Client kopieren und einfügen.
Edward Ned Harvey

Das klingt für mich so, als hätten Sie eine URL in einer der Konfigurationsdateien verpasst. Wir verwenden nur HTTPS und deaktivieren absichtlich HTTP vor dem "Verschieben" in meiner ursprünglichen Frage / Beschreibung hier. Wenn wir es also ausschließlich als HTTPS hatten, konnten wir uns scheinbar gemäß den veröffentlichten Anweisungen bewegen. Wenn Sie jedoch eine http / https-Umgebung im gemischten Modus ausführen, müssen Sie höchstwahrscheinlich einige zusätzliche Zeilen bearbeiten.
eduncan911

Vielen Dank für den Kommentar, aber (a) Ich habe zweimal überprüft, ob ich die in der obigen Antwort genannten Änderungen vorgenommen habe. (b) Ich habe das folgende Verfahren installiert und dieses Verfahren erneut befolgt, um sicherzustellen, dass ich jeden Ort geändert habe, an dem sich die URL befindet. (c) Wir haben nicht nur http in https geändert, sondern auch den Hostnamen. Die Änderung des Hostnamens hat funktioniert, was bedeutet, dass die Änderungen an der Konfigurationsdatei erfolgreich waren. (d) Ich bin skeptisch gegenüber Ihrem Setup. Können Sie zu einem Projekt in Ihrem Gitlab navigieren und oben die SSH- und HTTP-URL anzeigen, zwischen ssh und http wechseln und prüfen, ob die angezeigte URL "http" oder "https" enthält?
Edward Ned Harvey

1
Diese Antwort ist jetzt mehrdeutig. Sie sagen: "Eigentlich ist das NICHT ganz richtig." aber was ist "das"? Beziehen Sie sich auf etwas in der Frage? Eine der anderen Antworten?
Jonathon Reinhart

1

Hier finden Sie detaillierte Hinweise, die mir sehr geholfen haben .

Jonathon Reinhart hat bereits mit dem Schlüsselbit geantwortet, um /etc/gitlab/gitlab.rb zu bearbeiten , die external_url zu ändern und dann auszuführensudo gitlab-ctl reconfigure; sudo gitlab-ctl restart

Ich musste jedoch noch ein bisschen weiter gehen und die oben verlinkten Dokumente erklärten es. So sah ich aus:

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"
}

Oben habe ich explizit angegeben, wo sich meine SSL-Goodies auf diesem Server befinden. Und darauf folgt natürlich

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

Wenn Sie das Omnibus-Paket auf https umstellen, wird der gebündelte Nginx nur auf Port 443 bereitgestellt. Da alle meine Daten über den Reverse-Proxy erreicht werden, war dieser Teil möglicherweise von Bedeutung.

Als ich das durchging, habe ich etwas vermasselt und es war hilfreich, die tatsächlichen Nginx-Protokolle zu finden. Dies führte mich dorthin:

sudo gitlab-ctl tail nginx
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.