Я установил Gitlab на Ubuntu 12.04, используя пакет по умолчанию из https://about.gitlab.com/downloads/
{редактировать, чтобы уточнить}
Я настроил Apache для прокси и запустил сервер nginx, пакет, установленный на порт 8888 (по крайней мере, я так думал).
Поскольку у меня уже был установлен Apache, мне нужно запустить nginx на localhost: 8888. Проблема в том, что все изображения (например, аватары) теперь обслуживаются из http://localhost:8888
, и все URL-адреса оформления заказа, которые дает Gitlab, также являются localhost - вместо использования моего доменного имени.
Если я изменю /etc/gitlab/gitlab.rb
для использования этого URL-адреса Gitlab перестанет работать и выдаст ошибку 503.
Есть идеи, как я могу сказать Gitlab, какой URL-адрес представить миру, даже если он действительно работает на localhost?
/etc/gitlab/gitlab.rb
выглядит как:
# Change the external_url to the address your users will type in their browser
external_url 'http://my.local.domain'
redis['port'] = 6379
postgresql['port'] = 2345
unicorn['port'] = 3456
и /opt/gitlab/embedded/conf/nginx.conf
выглядит как:
server {
listen localhost:8888;
server_name my.local.domain;
[Обновить]
Похоже, что nginx все еще прослушивает неправильный порт, если я не укажу localhost: 8888 в качестве external_url. Я нашел это в /var/log/gitlab/nginx/error.log
2014/08/19 14:29:58 [emerg] 2526#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2014/08/19 14:29:58 [emerg] 2526#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2014/08/19 14:29:58 [emerg] 2526#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2014/08/19 14:29:58 [emerg] 2526#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2014/08/19 14:29:58 [emerg] 2526#0: bind() to 0.0.0.0:80 failed (98: Address already in use)
2014/08/19 14:29:58 [emerg] 2526#0: still could not bind()
Настройка Apache выглядит так:
<VirtualHost *:80>
ServerName my.local.domain
ServerSignature Off
ProxyPreserveHost On
AllowEncodedSlashes NoDecode
<Location />
ProxyPass http://localhost:8888/
ProxyPassReverse http://127.0.0.1:8888
ProxyPassReverse http://my.local.domain
</Location>
</VirtualHost>
Кажется, что все возвращается в норму, если Gitlab слушает localhost: 8888 - мне просто нужно, чтобы Gitlab начал отображать правильный URL-адрес вместо localhost: 8888.
Мне очень грустно, что ни у кого нет четкого ответа на этот вопрос, это натянуто между множеством других сообщений и некоторым хитрым редактированием конфига. Я собрал все это здесь для вас, ребята, чтобы сэкономить вам те два часа, которые я только что потратил.
Моя установка: у меня есть apache, на котором размещено множество сайтов и хостов HTTPS, который я настроил как обратный прокси, указывающий на gitlab. Поэтому я хочу, чтобы мой URL-адрес, который gitlab генерирует в электронных письмах, указывал на безопасный URL-адрес apache. Итак, чтобы сделать это ...
В CentOS 7 это /opt/gitlab/embedded/cookbooks/gitlab/libraries/gitlab.rb.
и измените строку ...
external_url nil
к
external_url "http://<yoururl>:81"
Теперь ваш nginx будет размещаться на порту 81, НО ваши URL-адреса, отправленные по электронной почте, будут выглядеть как «http: //: 81», а не ваш защищенный прокси-сервер apache. Итак, чтобы сделать это ...
В CentOS 7 это находится по адресу /var/opt/gitlab/gitlab-rails/etc/gitlab.yml
и измените строку ...
## Web server settings (note: host is the FQDN, do not include http://)
host: <yoururl>
port: 81
https: false
к
## Web server settings (note: host is the FQDN, do not include http://)
host: <yoururl>
port: 443
https: true
Тогда просто убедитесь, что nginx запускается правильно, если нужно, gitlab-ctl tail nginx и посмотрите, какие ошибки он выдает.
ВНИМАНИЕ: если вы снова запустите gitlab-ctl reconfigure, вам нужно будет снова внести это изменение. Я искал все выше и ниже и не нашел способа сделать это таким образом, чтобы переконфигурировать с этим хорошо. Это запрос функции, который кто-то может попросить добавить в gitlab, он должен быть довольно незначительным. Необязательная переменная «actual_url», которая при установке используется для любых сгенерированных URL-адресов.
Согласно документации на Gitlab's github:
# Copy the example GitLab config
sudo -u git -H cp config/gitlab.yml.example config/gitlab.yml
# Make sure to change "localhost" to the fully-qualified domain name of your
# host serving GitLab where necessary
Также убедитесь, что Apache отправляет соответствующие заголовки прокси.
В этом случае конфигурация nginx не имеет значения, поскольку вы используете Apache для прокси. Просто удалите его или выключите.
Я, наконец, выполнил эту документацию, которая состоит из отключения nginx и позволила вашему прокси-серверу установки apache gitlab, что имеет для меня больше смысла, и в любом случае у меня были проблемы с некоторыми активами, которые все еще загружаются с: 8081 при попытке прокси через прокси-сервер nginx
http://ryansechrest.com/2015/08/use-apache-instead-of-built-in-nginx-in-gitlab-ce/
vi /etc/gitlab/gitlab.rb
Установите внешний URL
external_url 'http://mygitlab.web.site/'
Изменить пользователя и группу www
web_server['username'] = 'www-data'
web_server['group'] = 'www-data'
Отключить nginx
nginx['enable'] = false
Установить порт для сервера git (в конце файла)
gitlab_git_http_server['listen_network'] = "tcp"
gitlab_git_http_server['listen_addr'] = "localhost:8282"
Перенастроить gitlab
gitlab-ctl reconfigure
Измените конфигурацию вашего виртуального хоста
<VirtualHost *:80>
ServerName git.domain.com
DocumentRoot /opt/gitlab/embedded/service/gitlab-rails/public
ProxyPreserveHost On
AllowEncodedSlashes Off
<Location />
Order deny,allow
Allow from all
ProxyPassReverse http://127.0.0.1:8080
ProxyPassReverse http://git.domain.com/
</Location>
RewriteEngine on
#Don't escape encoded characters in api requests
RewriteCond %{REQUEST_URI} ^/api/v3/.*
RewriteRule .* http://127.0.0.1:8080%{REQUEST_URI} [P,QSA,NE]
#Forward all requests to gitlab-workhorse except existing files like error documents
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_URI} ^/uploads/.*
RewriteRule .* http://127.0.0.1:8282%{REQUEST_URI} [P,QSA]
</VirtualHost>
Перезапускает gitlab
gitlab-ctl restart
Я тоже столкнулся с этой проблемой, но не из-за прокси-сервера Apache. Моя установка представляла собой простой порт для переадресации с хост-компьютера на виртуальную машину. Это решение должно работать для всех методов переадресации портов и проксирования. Единственное, что может измениться между ОС, - это расположение файлов конфигурации Gitlab. Я использую Debian 7.8 с Gitlab 7.8.4
Короткий ответ:
Внесите следующие изменения в /etc/gitlab/gitlab.rb
:
external_url
из 'http://gitlab.example.com/'
к 'http://gitlab.example.com:8080'
nginx['custom_gitlab_server_config'] = "listen *:80;"
Заключительные примечания: - Nginx от Gitlab не может работать на: 8080 на "внутренней" машине (на что указывает прокси / порт)
Длинный ответ:
Сюда входит дополнительная справочная информация о моей настройке и процессе поиска решения.
Моя установка:
computer.local
: Главный компьютер
computer-vm.local:80
computer-vm.local:22
computer-vm.local
: Виртуальная машина Debian, на которой установлен Gitlab и другое программное обеспечение. Эта виртуальная машина не использует мостовую сеть, поэтому любой порт, доступный извне, должен перенаправляться с главного компьютера.
ПРИМЕЧАНИЕ: я побежал sudo gitlab-ctl reconfigure
после каждой итерации изменения /etc/gitlab/gitlab.rb
Используя стандартные инструкции по установке, которые можно найти на их страница загрузки, экземпляр Gitlab был доступен по адресу computer.local:8080
. Я приступил к созданию учетных записей, но отправленная по электронной почте ссылка использовала URL http://computer-vm.local/users/confirmation?confirmation_token=...
, который был недоступен с любого компьютера, кроме главного компьютера. Изменение external_url
в /etc/gitlab/gitlab.rb
из http://computer-vm.local
к http://computer.local:8080
сделали Gitlab полностью недоступным. Переход к http://computer-vm.local:8080
от хоста выдала ошибку «502: Gitlab не отвечает». После расследования выяснилось, что Единорог пытался подслушать localhost:8080
, поэтому Nginx и Unicorn боролись за один и тот же порт, причем Nginx выигрывал битву, но оставил Gitlab бесполезным. Изменение external_url
к http://computer.local:8081
Устранена ошибка 502 с Gitlab, доступным по адресу http://computer-vm.local:8081
. Но это только одна проблема ...
Мне нужно было, чтобы Gitlab рекламировал свой URL как 'http://computer.local:8080'
из-за форварда порта, который я не хотел менять. Так, external_url
был изменен обратно на http://computer.local:8080
. Посмотрите в документации Gitlab о параметрах Nginx Вот, нет упоминания о том, как изменить порт Nginx без изменения полного внешнего URL-адреса Gitlab (что было опцией в предыдущих версиях). Однако Gitlab позволяет пользователю передавать произвольную опцию Nginx через nginx['custom_gitlab_server_config']
вариант. Я добавил в свой /etc/gitlab/gitlab.rb
файл:
nginx['custom_gitlab_server_config'] = "listen *:80;"
После перенастройки Gitlab, вуаля! Доступен из http://computer.local:8080
, и включает правильный домен при отправке ссылок для сброса пароля и при отображении git clone
ссылки.
Мне также пришлось изменить gitlab_rails['gitlab_shell_ssh_port']
из 22
к 2222
из-за ситуации с переадресацией портов, но, возможно, вам и не придется.
Мой последний /etc/gitlab/gitlab.rb
:
external_url "computer.local:8080"
gitlab_rails['gitlab_shell_ssh_port'] = 2222
nginx['custom_gitlab_server_config'] = "listen *:80;"
У меня была такая же проблема, смени
external_url 'http://my.local.domain'
к
external_url 'http://my.local.domain:8888'
и повторно создайте конфигурацию gitlab, это исправит конфигурацию nginx. Прокси-сервер Apache должен исправить ссылки, чтобы снова удалить 8888.
Надеюсь, это поможет, в итоге я удалил gitlab из существующей среды, собираясь развернуть чистую виртуальную машину для gitlab, поскольку она (на мой взгляд) не очень хорошо работает с существующими настройками.
Очень простой способ изменить номер порта по умолчанию
запустить- gitlab-ctl stop
отредактируйте файл в centos или linux: - /var/opt/gitlab/nginx/conf/gitlab-http.conf
изменить прослушивание *: 80; к чему вы хотите Пример: - 90
затем
Не запускайте команду - gitlab-ctl reconfigure
Если gitlab-ctl перенастроит его, он настроил gitlab по умолчанию и удалил изменения.
так что только запускаем - gitlab-ctl start
Для всех, кто обнаружит это, в поддержку:
Учитывая этот образец конфигурации ProxyPass:
ProxyPass /gitlab http://localhost:81/gitlab
ProxyPassReverse /gitlab http://localhost:81/gitlab
Отредактируйте два параметра в gitlab.rb и переконфигурируйте. Шаги:
Отредактируйте /etc/gitlab/gitlab.rb.
Изменить: external_url 'http://my.local.domain/gitlab'
Кому: external_url 'http://my.local.domain/'
Отредактируйте /etc/gitlab/gitlab.rb
Изменить: # nginx['listen_port'] = nil
Кому: nginx['listen_port'] = 81
Команда выполнения: gitlab-ctl reconfigure
Готово.