Как изменить URL-адрес работающей установки GitLab?

89

Я настроил, и мы запускаем установку GitLab v6.0.1 по умолчанию (мы тоже собираемся обновить). Это была «производственная» установка, в точности следовавшая этому руководству:

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

Теперь, как нам безопасно изменить URL-адрес работающей установки?

Очевидно, наш URL-адрес очень длинный, и мы придумали новый URL-адрес. Я отредактировал несколько файлов конфигурации и в отчете «Проверка статуса приложения» все в порядке. Я перезагрузил сервер, чтобы убедиться, что все по-прежнему работает.

Я могу получить доступ к Nginx по нашему оригинальному SSL. Я могу просматривать сайт 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
eduncan911
источник
9
Пользователи Omnibus install: Процесс отличается .
Джонатон Рейнхарт

Ответы:

29

Вы все сделали правильно!

Вы также можете изменить конфигурацию электронной почты в зависимости от того, является ли почтовый сервер тем же самым сервером. Конфигурация электронной почты находится в gitlab.yml для писем, отправленных GitLab, а также для электронной почты администратора.

Razer
источник
Мне было интересно об этом, потому что я установил электронное письмо «От» (и другое электронное письмо), которое будет отправлено с псевдонима электронной почты нашей глобальной группы разработчиков, который находится в другом домене. Например: devs@domain-2.com. Причина в том, чтобы позволить разработчикам нажимать "Ответить", чтобы оставлять комментарии к запросам на вытягивание или другим общим сообщениям электронной почты.
eduncan911
2
Вернулся, чтобы отметить это как ответ, поскольку GitLab работает нормально с тех пор, как я внес эти изменения выше.
eduncan911
159

GitLab Омнибус

Для установки 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-адресу. Параметр external_urlв /etc/gitlab/gitlab.rbбыл правильным местом для установки URL-адреса, чтобы URL-адреса Git / HTTP проекта были правильными.
Мэтью Кларк,
Кроме того, после этого изменения и после запуска gitlab-ctl reconfigure вам необходимо перезагрузить сервер, чтобы произошла реконфигурация nginx.
Dejv
Вы правы, это единственное и лучшее место для изменения этих настроек. Остальное генерируется.
dangerous89 06
4
@Dejv перезагружать не нужно. Достаточно перезапустить службу nginx.
Джонатон Рейнхарт
Спасибо @JonathonReinhart, эта работа для меня, но сначала не забывайте делать sudo gitlab-ctl stop unicornиsudo gitlab-ctl stop sidekiq
Cyberguille
7

На самом деле это НЕ совсем правильно. Я зашел на эту страницу, пытаясь ответить на этот вопрос сам, поскольку мы переводим производственный сервер GitLab с http://на, https://и большинство вещей работает, как описано выше, но когда вы входите вhttps://server все выглядит нормально ... кроме случаев, когда вы просматриваете проект или репозиторий, и он отображает инструкции 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;

...
Эдвард Нед Харви
источник
Спасибо, Эдвард, за ваш комментарий (вы опубликовали ответ на этот вопрос, хотя на самом деле это комментарий к другому ответу @Razer выше). Вы можете изменить свой ответ (комментарий), чтобы указать, какая у вас версия для других. Но мы успешно использовали GitLab только с этими изменениями с тех пор, как я опубликовал этот вопрос. мы можем просматривать репозитории и проекты в рамках всей команды - полностью через SSL исключительно в нашей корпоративной сети.
eduncan911
2
Я знаю, но другой ответ отмечен как принятый. Поэтому я специально не хотел это комментировать, потому что это не привлекает внимания. Публикация другого ответа немного более выражена. Я использую последнюю версию gitlab-shell 1.8.0 и стабильную версию gitlab 6.4. Мы также можем работать полностью по https и ssh. Но мы должны помнить о замене http на https каждый раз, когда мы копируем и вставляем инструкции или URL-адрес из веб-интерфейса в клиент git.
Эдвард Нед Харви
Мне кажется, что вы пропустили URL-адрес в одном из файлов конфигурации. Мы используем только HTTPS и намеренно отключили HTTP перед "перемещением" в моем исходном вопросе / описании здесь. Таким образом, использование его исключительно как HTTPS позволило нам незаметно двигаться в соответствии с опубликованными инструкциями. Но если вы используете среду http / https в смешанном режиме, скорее всего, вам нужно отредактировать несколько дополнительных строк.
eduncan911
Спасибо за комментарий, но (а) я дважды проверил, внес ли изменения, упомянутые в приведенном выше ответе. (b) Я установил следующую процедуру и повторно выполнил эту процедуру, чтобы убедиться, что я изменил каждое место, где находится URL. (c) Мы не только изменили http на https, мы также изменили имя хоста. Изменение имени хоста сработало, что означает, что модификации файла конфигурации были успешными. (г) Я скептически отношусь к вашей установке. Можете ли вы перейти к проекту в своем gitlab, а вверху, где он показывает URL-адрес SSH и HTTP, переключаться между ssh и http и посмотреть, имеет ли отображаемый URL-адрес «http» или «https»?
Эдвард Нед Харви
1
Этот ответ сейчас неоднозначен. Вы заявляете: «На самом деле это НЕ совсем правильно». но что такое "это"? Вы имеете в виду что-то в вопросе? Один из других ответов?
Джонатон Рейнхарт,
1

Подробные записи об этом, которые мне полностью помогли, находятся здесь .

Джонатон Рейнхарт уже ответил ключевым битом, чтобы отредактировать /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

Кроме того, когда вы переключаете пакет omnibus на https, связанный nginx будет обслуживать только порт 443. Поскольку все мои данные доступны через обратный прокси-сервер, эта часть была потенциально важной.

Когда я прошел через это, я кое-что напортачил, и было полезно найти фактические журналы nginx, это привело меня туда:

sudo gitlab-ctl tail nginx
Джеймс Т. Снелл
источник