¿Cómo cambiamos la URL de una instalación de GitLab que funcione?

89

He configurado y estamos ejecutando una instalación predeterminada de GitLab v6.0.1 (también estamos a punto de actualizar). Fue una configuración de "Producción", siguiendo esta guía exactamente al pie de la letra:

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

Ahora, ¿cómo cambiamos de forma segura la URL de una instalación funcional?

Aparentemente, nuestra URL es muy larga y hemos creado una nueva URL. He editado varios archivos de configuración y las "Verificaciones del estado de la aplicación" informan que todo está bien. Reinicié el servidor para asegurarme de que todo sigue funcionando.

Puedo acceder a Nginx sin problemas, a través de nuestro SSL original. Puedo navegar por el sitio de GitLab, crear un repositorio, etc. Puedo bifurcar y comprometer bien.

Todo parece estar bien; pero, dado que este no es un entorno nativo para mí, quería verificar que hice todo lo posible para cambiar el nombre de un sitio de GitLab.

Los archivos que he editado son:

/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
fuente
9
Usuarios de instalación de Omnibus: el proceso es diferente .
Jonathon Reinhart

Respuestas:

29

¡Hiciste todo correctamente!

También puede cambiar la configuración del correo electrónico, dependiendo de si el servidor de correo electrónico también es el mismo servidor. La configuración del correo electrónico está en gitlab.yml para los correos enviados por GitLab y también el correo electrónico de administración.

Razer
fuente
Me preguntaba acerca de esto, porque configuré el correo electrónico De (y el otro correo electrónico) para que se envíe desde nuestro alias de correo electrónico del grupo de desarrolladores global que está en un dominio diferente. Me gusta: [email protected]. La razón es permitir que los desarrolladores presionen Responder para hacer comentarios sobre solicitudes de extracción u otros correos electrónicos generales.
eduncan911
2
Volví a marcar esto como una respuesta, ya que GitLab ha estado funcionando bien desde que hice estos cambios anteriores.
eduncan911
159

GitLab Omnibus

Para una instalación de Omnibus, es un poco diferente.

El lugar correcto en una instalación de Omnibus es:

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

Finalmente, deberá ejecutar sudo gitlab-ctl reconfigurey, sudo gitlab-ctl restartpor lo tanto, se aplican los cambios.


Estaba haciendo cambios en los lugares equivocados y se estaban quedando boquiabiertos.

Los caminos incorrectos son:

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

Preste atención a las advertencias que dicen:

# 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
fuente
Tengo GitLab Omnibus en un servidor interno, pero accesible desde Internet desde una URL diferente. La external_urlopción en /etc/gitlab/gitlab.rbera el lugar correcto para configurar la URL para que las URL de Git / HTTP del proyecto fueran correctas.
Matthew Clark
Además, después de este cambio y después de ejecutar gitlab-ctl reconfigure, debe reiniciar el servidor para que se lleve a cabo la reconfiguración de nginx.
Dejv
Tiene razón, este es el único y mejor lugar para cambiar esta configuración. El resto se genera.
danger89
4
@Dejv no debería tener que reiniciar. Reiniciar el servicio nginx debería ser suficiente.
Jonathon Reinhart
Gracias @JonathonReinhart este trabajo para mí, pero primero no te olvides de hacerlo sudo gitlab-ctl stop unicornysudo gitlab-ctl stop sidekiq
Cyberguille
7

En realidad, esto NO es totalmente correcto. Llegué a esta página, tratando de responder a esta pregunta a mí mismo, como estamos en transición producción GitLab servidor de http://a https://y más cosas está trabajando como se ha descrito anteriormente, pero cuando se conecta ahttps://server y todo se ve bien ... excepto cuando explora un proyecto o repositorio, y muestra las instrucciones SSH y HTTP ... Dice "http" y las instrucciones que muestra también dicen "http".

Sin embargo, encontré algunas cosas más para editar:

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

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

y

/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
fuente
Gracias Edward por tu comentario (publicaste una Respuesta a esta pregunta, cuando en realidad es un comentario a una respuesta diferente de @Razer arriba). Es posible que desee editar su respuesta (comentario) para indicar en qué versión se encuentra para los demás. Pero, hemos estado usando GitLab con éxito solo con estos cambios desde que publiqué esta pregunta. podemos buscar repositorios y proyectos en todo el equipo, completamente a través de SSL exclusivamente en nuestra red corporativa.
eduncan911
2
Lo sé, pero la otra respuesta está marcada como una respuesta aceptada. Así que, a propósito, no quería comentar sobre eso, ya que no llama la atención. Publicar otra respuesta es un poco más pronunciado. Estoy en la última versión estable de gitlab-shell 1.8.0 y gitlab 6.4. También podemos trabajar, completamente a través de https y ssh. Pero tenemos que recordar reemplazar http por https cada vez que copiemos y peguemos instrucciones o URL desde la interfaz web al cliente git.
Edward Ned Harvey
Me parece que te perdiste una URL en uno de los archivos de configuración. Solo usamos HTTPS y HTTP deshabilitado intencionalmente antes del "movimiento" en mi pregunta / descripción original aquí. Por lo tanto, tenerlo exclusivamente como HTTPS nos permitió movernos según las instrucciones publicadas sin problemas. Pero, si está ejecutando un entorno http / https de modo mixto, lo más probable es que haya algunas líneas adicionales que deba editar.
eduncan911
Gracias por el comentario, pero (a) verifiqué dos veces que hice los cambios mencionados en la respuesta anterior. (b) Instalé el siguiente procedimiento y volví a seguir ese procedimiento para asegurarme de haber cambiado todos los lugares donde se encuentra la URL. (c) No solo cambiamos http a https, también cambiamos el nombre de host. El cambio de nombre de host funcionó, lo que significa que las modificaciones del archivo de configuración se realizaron correctamente. (d) Soy escéptico sobre su configuración. ¿Puedes buscar un proyecto en tu gitlab, y en la parte superior donde te muestra la URL SSH y HTTP, alternar entre ssh y http, y ver si la URL que muestra tiene "http" o "https"?
Edward Ned Harvey
1
Esta respuesta ahora es ambigua. Dices "En realidad, esto NO es totalmente correcto". pero qué es esto"? ¿Te refieres a algo en la pregunta? ¿Una de las otras respuestas?
Jonathon Reinhart
1

Hay notas detalladas sobre esto que me ayudaron por completo, ubicadas aquí .

Jonathon Reinhart ya ha respondido con el bit de clave, para editar /etc/gitlab/gitlab.rb , alterar el external_url y luego ejecutarsudo gitlab-ctl reconfigure; sudo gitlab-ctl restart

Sin embargo, necesitaba ir un poco más allá y los documentos que vinculé anteriormente lo explican. Entonces, lo que terminé con se ve así:

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

Arriba, he declarado explícitamente dónde están mis beneficios SSL en este servidor. Y eso, por supuesto, seguido de

sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart

Además, cuando cambia el paquete ómnibus a https, el nginx incluido solo servirá en el puerto 443. Dado que todas mis cosas se alcanzan a través de un proxy inverso, esta parte era potencialmente significativa.

Mientras pasaba por esto, arruiné algo y fue útil encontrar los registros de nginx reales, esto me llevó allí:

sudo gitlab-ctl tail nginx
James T Snell
fuente