Jak zmienić adres URL działającej instalacji GitLab?

89

Skonfigurowałem i uruchamiamy domyślną instalację GitLab w wersji 6.0.1 (wkrótce również zaktualizujemy). To była konfiguracja „produkcyjna”, dokładnie według tego przewodnika:

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

Jak teraz możemy bezpiecznie zmienić adres URL działającej instalacji?

Najwyraźniej nasz adres URL jest bardzo długi i opracowaliśmy nowy adres URL. Edytowałem wiele plików konfiguracyjnych i raport „Sprawdzanie stanu aplikacji” informuje, że wszystko jest w porządku. Zrestartowałem serwer, aby upewnić się, że wszystko nadal działa.

Mogę uzyskać dostęp do Nginx przez nasz oryginalny SSL. Mogę przeglądać witrynę GitLab, tworzyć repozytorium, itd. Potrafię dobrze rozwidlać i zatwierdzać.

Wszystko wydaje się być w porządku; ale ponieważ nie jest to dla mnie środowisko natywne, chciałem dokładnie sprawdzić, czy zrobiłem wszystko, aby zmienić nazwę witryny GitLab.

Pliki, które edytowałem to:

/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
eduncan911
źródło
9
Użytkownicy instalacji omnibus: proces jest inny .
Jonathon Reinhart,

Odpowiedzi:

29

Zrobiłeś wszystko poprawnie!

Możesz również zmienić konfigurację poczty e-mail, w zależności od tego, czy serwer poczty jest również tym samym serwerem. Konfiguracja poczty e-mail znajduje się w gitlab.yml dla wiadomości wysyłanych przez GitLab, a także e-maili administratora.

Razer
źródło
Zastanawiałem się nad tym, ponieważ ustawiłem adres e-mail od (i drugi e-mail) na wysyłanie z naszego aliasu e-mail naszej globalnej grupy programistów, która znajduje się w innej domenie. Na przykład: [email protected]. Powodem jest umożliwienie programistom klikania opcji Odpowiedz, aby komentować żądania pull lub inne ogólne wiadomości e-mail.
eduncan911
2
Wróciłem, aby oznaczyć to jako odpowiedź, ponieważ GitLab działa dobrze, odkąd wprowadziłem te zmiany powyżej.
eduncan911
159

GitLab Omnibus

W przypadku instalacji Omnibus wygląda to trochę inaczej.

Prawidłowe miejsce w an Omnibus zainstalować to:

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

Wreszcie, trzeba wykonać sudo gitlab-ctl reconfigure, a sudo gitlab-ctl restartwięc zastosować zmiany.


Wprowadzałem zmiany w niewłaściwych miejscach i one były zdmuchnięte.

Te błędne ścieżki są:

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

Zwróć uwagę na ostrzeżenia, które brzmią:

# 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`.
Jonathon Reinhart
źródło
Mam GitLab Omnibus na serwerze wewnętrznym, ale dostępny z Internetu z innego adresu URL. Ta external_urlopcja /etc/gitlab/gitlab.rbbyła właściwym miejscem do ustawienia adresu URL, tak aby adresy URL projektu Git / HTTP były prawidłowe.
Matthew Clark
Ponadto, po tej zmianie i po ponownej konfiguracji gitlab-ctl, musisz zrestartować serwer, aby nastąpiła rekonfiguracja nginx.
Dejv
Masz rację, to jedyne i najlepsze miejsce na zmianę tych ustawień. Reszta jest generowana.
niebezpieczeństwo89
4
@Dejv nie powinieneś ponownie uruchamiać. Ponowne uruchomienie usługi nginx powinno wystarczyć.
Jonathon Reinhart,
Dzięki @JonathonReinhart tę pracę dla mnie, ale najpierw nie zapomnij zrobić sudo gitlab-ctl stop unicornisudo gitlab-ctl stop sidekiq
Cyberguille,
7

W rzeczywistości NIE jest to całkowicie poprawne. Dotarłem na tę stronę, próbując sam odpowiedzieć na to pytanie, ponieważ przenosimy produkcyjny serwer GitLab z http://na https://i większość rzeczy działa tak, jak opisano powyżej, ale kiedy się logujesz https://serveri wszystko wygląda dobrze ... z wyjątkiem przeglądania projektu lub repozytorium i wyświetla instrukcje SSH i HTTP ... Mówi „http”, a wyświetlane instrukcje również mówią „http”.

Znalazłem jednak więcej rzeczy do edycji:

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

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

i

/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 Ned Harvey
źródło
Dziękuję Edward za komentarz (opublikowałeś odpowiedź na to pytanie, podczas gdy w rzeczywistości jest to komentarz do innej odpowiedzi autorstwa @Razer powyżej). Możesz edytować swoją odpowiedź (komentarz), aby określić, w jakiej wersji jesteś dla innych. Ale z powodzeniem używamy GitLab tylko z tymi zmianami, odkąd opublikowałem to pytanie. możemy przeglądać repozytoria i projekty w całym zespole - całkowicie przez SSL, wyłącznie w naszej sieci firmowej.
eduncan911
2
Wiem, ale druga odpowiedź jest oznaczona jako zaakceptowana. Więc celowo nie chciałem tego komentować, ponieważ to nie zwraca uwagi. Opublikowanie innej odpowiedzi jest nieco bardziej wyraźne. Jestem na najnowszej stabilnej wersji gitlab-shell 1.8.0 i gitlab 6.4. Jesteśmy również w stanie pracować, całkowicie przez https i ssh. Musimy jednak pamiętać o zamianie http na https za każdym razem, gdy kopiujemy i wklejamy instrukcje lub adres URL z interfejsu internetowego do klienta git.
Edward Ned Harvey,
To brzmi dla mnie, że przegapiłeś adres URL w jednym z plików konfiguracyjnych. Używamy tylko protokołu HTTPS i celowo wyłączamy protokół HTTP przed „przeniesieniem” w moim pierwotnym pytaniu / opisie tutaj. Tak więc posiadanie go wyłącznie jako HTTPS pozwoliło nam poruszać się zgodnie z opublikowanymi instrukcjami. Ale jeśli używasz mieszanego środowiska http / https, najprawdopodobniej istnieje kilka dodatkowych wierszy, które musisz edytować.
eduncan911
Dziękuję za komentarz, ale (a) dwukrotnie sprawdziłem, czy dokonałem zmian, o których mowa w powyższej odpowiedzi. (b) Zainstalowałem zgodnie z procedurą i powtórzyłem tę procedurę, aby upewnić się, że zmieniłem każde miejsce, w którym znajduje się adres URL. (c) Nie tylko zmieniliśmy http na https, ale także zmieniliśmy nazwę hosta. Zmiana nazwy hosta zadziałała, co oznacza, że ​​modyfikacje pliku konfiguracyjnego zakończyły się pomyślnie. (d) Jestem sceptyczny co do twojej konfiguracji. Czy możesz przejść do projektu w swoim gitlab i u góry, gdzie pokazuje on URL SSH i HTTP, przełączać się między ssh i http i sprawdzić, czy wyświetlany adres URL ma „http” lub „https”?
Edward Ned Harvey
1
Ta odpowiedź jest teraz niejednoznaczna. Oświadczasz: „Właściwie to NIE jest całkowicie poprawne”. ale co to jest „to”? Czy odnosisz się do czegoś w pytaniu? Jedna z pozostałych odpowiedzi?
Jonathon Reinhart
1

Istnieją szczegółowe notatki na temat tego, które pomogły mi całkowicie, znajdujące się tutaj .

Jonathon Reinhart już odpowiedział kluczem, aby edytować /etc/gitlab/gitlab.rb , zmienić zewnętrzny_url, a następnie uruchomićsudo gitlab-ctl reconfigure; sudo gitlab-ctl restart

Jednak musiałem pójść trochę dalej i doktorzy, których połączyłem powyżej, wyjaśnili to. Więc to, co skończyło, wygląda następująco:

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

Powyżej wyraźnie zadeklarowałem, gdzie na tym serwerze znajdują się moje gadżety SSL. I to oczywiście następuje

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

Ponadto, gdy zmienisz pakiet omnibus na https, dołączony nginx będzie obsługiwał tylko port 443. Ponieważ wszystkie moje rzeczy są dostępne przez zwrotne proxy, ta część była potencjalnie znacząca.

Kiedy przez to przechodziłem, coś schrzaniłem i pomocne było znalezienie rzeczywistych dzienników Nginx, co mnie tam doprowadziło:

sudo gitlab-ctl tail nginx
James T. Snell
źródło