Comment changer l'URL d'une installation GitLab fonctionnelle?

89

J'ai configuré et nous exécutons une installation par défaut de GitLab v6.0.1 (nous sommes également sur le point de mettre à jour). C'était une configuration "Production", suivant ce guide à la lettre:

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

Maintenant, comment pouvons-nous modifier en toute sécurité l'URL d'une installation fonctionnelle?

Apparemment, notre URL est très longue et nous avons trouvé une nouvelle URL. J'ai édité un certain nombre de fichiers de configuration et le rapport «Vérification de l'état de l'application» tout est OK. J'ai redémarré le serveur pour m'assurer que les choses fonctionnent toujours.

Je peux accéder à Nginx très bien, via notre SSL d'origine. Je peux parcourir le site GitLab, créer un référentiel, etc. Je peux très bien forké et commettre.

Tout semble aller bien; mais, comme ce n'est pas un environnement natif pour moi, je voulais vérifier que j'ai tout fait pour renommer un site GitLab.

Les fichiers que j'ai modifiés sont:

/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
la source
9
Utilisateurs de l'installation Omnibus: le processus est différent .
Jonathon Reinhart

Réponses:

29

Vous avez tout fait correctement!

Vous pouvez également modifier la configuration de la messagerie électronique, selon que le serveur de messagerie est également le même serveur. La configuration des e-mails est dans gitlab.yml pour les e-mails envoyés par GitLab ainsi que l'admin-email.

Razer
la source
Je m'interrogeais à ce sujet, car j'ai configuré l'e-mail De (et l'autre e-mail) à envoyer à partir de l'alias d'e-mail de notre groupe de développeurs global qui se trouve sur un domaine différent. Comme: [email protected]. La raison est de permettre aux développeurs d'appuyer sur Répondre pour faire des commentaires sur les demandes d'extraction ou d'autres e-mails généraux.
eduncan911
2
Je suis revenu pour marquer cela comme une réponse car GitLab fonctionnait bien depuis que j'ai apporté ces modifications ci-dessus.
eduncan911
159

Omnibus GitLab

Pour une installation Omnibus, c'est un peu différent.

L' endroit correct dans une installation Omnibus est:

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

Enfin, vous devrez exécuter sudo gitlab-ctl reconfigureet sudo gitlab-ctl restartles modifications s'appliqueront.


Je faisais des changements aux mauvais endroits et ils étaient époustouflés.

Les chemins incorrects sont:

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

Faites attention aux avertissements qui disent:

# 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
la source
J'ai GitLab Omnibus sur un serveur interne, mais accessible depuis Internet à partir d'une URL différente. L' external_urloption dans /etc/gitlab/gitlab.rbétait le bon endroit pour définir l'URL afin que les URL Git / HTTP du projet soient correctes.
Matthew Clark
De plus, après ce changement et après avoir exécuté la reconfiguration de gitlab-ctl, vous devez redémarrer le serveur pour que la reconfiguration de nginx ait lieu.
Dejv
Vous avez raison, c'est le seul et le meilleur endroit pour modifier ces paramètres. Le reste est généré.
danger89
4
@Dejv vous ne devriez pas avoir à redémarrer. Le redémarrage du service nginx devrait être suffisant.
Jonathon Reinhart
Merci @JonathonReinhart ce travail pour moi, mais d'abord n'oubliez pas de faire sudo gitlab-ctl stop unicornetsudo gitlab-ctl stop sidekiq
Cyberguille
7

En fait, ce n'est PAS totalement correct. Je suis arrivé à cette page en essayant de répondre moi-même à cette question, car nous sommes en train de faire la transition du serveur de production GitLab de http://vers https://et la plupart des choses fonctionnent comme décrit ci-dessus, mais lorsque vous vous connectez https://serveret que tout semble bien ... sauf lorsque vous naviguez vers un projet ou référentiel, et il affiche les instructions SSH et HTTP ... Il dit "http" et les instructions qu'il affiche disent aussi "http".

J'ai cependant trouvé d'autres choses à modifier:

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

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

et

/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
la source
Merci Edward pour ton commentaire (tu as posté une réponse à cette question, alors qu'il s'agit en fait d'un commentaire à une réponse différente de @Razer ci-dessus). Vous pouvez modifier votre réponse (commentaire) pour indiquer la version que vous utilisez pour les autres. Mais, nous avons utilisé avec succès GitLab avec seulement ces changements depuis que j'ai publié cette question. nous pouvons parcourir les dépôts et les projets à travers l'équipe - entièrement via SSL exclusivement dans notre réseau d'entreprise.
eduncan911
2
Je sais, mais l'autre réponse est marquée comme une réponse acceptée. Je ne voulais donc pas faire de commentaire à ce sujet, car cela n'attire pas l'attention. Poster une autre réponse est un peu plus prononcé. Je suis sur les derniers gitlab-shell 1.8.0 et gitlab 6.4 stable. Nous sommes également capables de travailler, entièrement via https et ssh. Mais nous devons nous rappeler de remplacer http par https chaque fois que nous copions et collons des instructions ou une URL de l'interface Web vers le client git.
Edward Ned Harvey
Cela me semble que vous avez manqué une URL dans l'un des fichiers de configuration. Nous n'utilisons que HTTPS et HTTP volontairement désactivé avant le "déplacement" dans ma question / description d'origine ici. Donc, l'avoir exclusivement en HTTPS nous a permis de suivre les instructions affichées de manière transparente. Mais, si vous exécutez un environnement http / https en mode mixte, il y a probablement quelques lignes supplémentaires que vous devez modifier.
eduncan911
Merci pour le commentaire, mais (a) j'ai vérifié deux fois que j'avais apporté les modifications référencées dans la réponse ci-dessus. (b) J'ai installé la procédure suivante, et j'ai de nouveau suivi cette procédure pour m'assurer que j'ai changé à chaque endroit de l'URL. (c) Nous avons non seulement changé http en https, nous avons également changé le nom d'hôte. Le changement de nom d'hôte a fonctionné, ce qui signifie que les modifications du fichier de configuration ont réussi. (d) Je suis sceptique quant à votre configuration. Pouvez-vous accéder à un projet dans votre gitlab, et en haut, où il vous montre l'URL SSH et HTTP, basculer entre ssh et http, et voir si l'URL qu'il affiche a "http" ou "https"?
Edward Ned Harvey le
1
Cette réponse est désormais ambiguë. Vous dites "En fait, ce n'est PAS totalement correct." mais qu'est-ce que «ceci»? Faites-vous référence à quelque chose dans la question? Une des autres réponses?
Jonathon Reinhart
1

Il y a des notes détaillées à ce sujet qui m'ont complètement aidé, situées ici .

Jonathon Reinhart a déjà répondu avec panneton, pour modifier /etc/gitlab/gitlab.rb , modifier le external_url puis exécutezsudo gitlab-ctl reconfigure; sudo gitlab-ctl restart

Cependant, j'avais besoin d'aller un peu plus loin et les documents que j'ai liés ci-dessus l'ont expliqué. Donc, ce que j'ai fini avec ressemble à:

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

Ci-dessus, j'ai explicitement déclaré où se trouvent mes goodies SSL sur ce serveur. Et c'est bien sûr suivi de

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

De plus, lorsque vous basculez le package omnibus sur https, le nginx fourni ne servira que sur le port 443. Puisque toutes mes affaires sont atteintes via un proxy inverse, cette partie était potentiellement importante.

Au fur et à mesure que je traversais cela, j'ai foiré quelque chose et il est utile de trouver les journaux réels de nginx, cela m'a conduit là:

sudo gitlab-ctl tail nginx
James T Snell
la source