Ответ 1
Об этих
Но Omnibus прослушивает 80 и, похоже, не использует ни Apache2, ни Nginx [, таким образом...].
и комментарий @stdob:
Разве omnibus не использовал nginx в качестве веб-сервера??? -
Как я ответил
Я думаю, не потому, что пакет nginx не установлен в системе...
В фактах
Из официальных документов Gitlab:
По умолчанию omnibus-gitlab устанавливает GitLab со связанным Nginx.
Так что да!
В пакете Omnibus используется Nginx!
но он был в комплекте, объясняя, почему он не требует установки в зависимости от операционной системы хоста.
Таким образом, ДА! Nginx может и должен использоваться для обслуживания моего PHP-приложения и обратного прокси-сервера двумя другими node приложениями.
Затем теперь
Omnibus-gitlab позволяет просматривать веб-сервер через пользователя gitlab-www
, который находится
в группе с тем же именем. Чтобы разрешить внешнему веб-серверу доступ к
GitLab, пользователь внешнего веб-сервера должен быть добавлен gitlab-www
group.
Чтобы использовать другой веб-сервер, такой как Apache или существующая установка Nginx, вам нужно будет сделать выполните следующие действия:
Отключите связанный Nginx, указав в /etc/gitlab/gitlab.rb
nginx['enable'] = false
# For GitLab CI, use the following:
ci_nginx['enable'] = false
Проверьте имя пользователя пользователя, не связанного с веб-сервером. По умолчанию omnibus-gitlab
не имеет значения по умолчанию для пользователя внешнего веб-сервера.
Вы должны указать имя пользователя внешнего веб-сервера в конфигурации!
Скажем, например, что пользователь веб-сервера www-data
.
В /etc/gitlab/gitlab.rb
установите
web_server['external_users'] = ['www-data']
Этот параметр представляет собой массив, поэтому вы можете указать более одного пользователя для добавления в группу gitlab-www.
Запустите sudo gitlab-ctl reconfigure
, чтобы изменения вступили в силу.
Установка адреса или адресов прослушивания NGINX
По умолчанию NGINX будет принимать входящие соединения на всех локальных IPv4-адресах.
Вы можете изменить список адресов в /etc/gitlab/gitlab.rb
.
nginx['listen_addresses'] = ["0.0.0.0", "[::]"] # listen on all IPv4 and IPv6 addresses
Для GitLab CI используйте параметр ci_nginx['listen_addresses']
.
Настройка порта прослушивания NGINX
По умолчанию NGINX будет прослушивать порт, указанный в external_url
или
неявно использовать правильный порт (80 для HTTP, 443 для HTTPS). Если вы работаете
GitLab за обратным прокси-сервером, вы можете переопределить порт прослушивания
что-то другое. Например, чтобы использовать порт 8080:
nginx['listen_port'] = 8080
Аналогично, для GitLab CI:
ci_nginx['listen_port'] = 8081
Поддержка прокси SSL
По умолчанию NGINX будет автоматически определять, использовать ли SSL, если external_url
содержит https://
. Если вы используете GitLab за обратным прокси-сервером, вы
может пожелать сохранить external_url
в качестве HTTPS-адреса, но
GITLAB NGINX внутри HTTP. Для этого вы можете отключить HTTPS, используя
параметр listen_https
:
nginx['listen_https'] = false
Аналогично, для GitLab CI:
ci_nginx['listen_https'] = false
Обратите внимание, что вам может потребоваться настроить обратный прокси-сервер для перенаправления определенных
заголовки (например, Host
, X-Forwarded-Ssl
, X-Forwarded-For
, X-Forwarded-Port
) в GitLab.
Вы можете увидеть неправильные перенаправления или ошибки (например, "422 Unprocessable Entity", "Невозможно подтвердить подлинность CSRF-токена" ), если вы забудете этот шаг. Для большего информацию, см.:
- Каков стандарт де-факто для обратного прокси-сервера, чтобы указать серверный протокол SSL?
- https://wiki.apache.org/couchdb/Nginx_As_a_Reverse_Proxy
Чтобы идти дальше, вы можете следить за официальными документами на https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md#using-a-non-bundled-web-server
Настройка нашего виртуального хоста gitlab
Установка Phusion Passenger
Нам нужно установить ruby (gitlab run in omnibus с включенным рубином) по всему миру в ОС
$ sudo apt-get update
$ sudo apt-get install ruby
$ sudo gem install passenger
Перекомпилировать nginx с пассажирским модулем
Вместо Apache2
, например, nginx не может быть подключен к двоичным модулям "на лету". Он должен быть перекомпилирован для каждого нового плагина, который вы хотите добавить.
Phusion команда разработчиков пассажирских упорно трудились, чтобы обеспечить говоря, " а в комплекте Nginx версия пассажирской":. Nginx бункерах скомпилирован с пассажирской плагин
Итак, давайте использовать его:
требование: нам нужно открыть наш
TCP
порт11371
(портAPT key
).
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 561F9B9CAC40B2F7
$ sudo apt-get install apt-transport-https ca-certificates
создание passenger.list
$ sudo nano /etc/apt/sources.list.d/passenger.list
с этими символами
# Ubuntu 14.04
deb https://oss-binaries.phusionpassenger.com/apt/passenger trusty main
используйте правильное репо для вашей версии ubuntu. Например, для Ubuntu 15.04: deb https://oss-binaries.phusionpassenger.com/apt/passenger яркий главный
Изменить разрешения:
$ sudo chown root: /etc/apt/sources.list.d/passenger.list
$ sudo chmod 600 /etc/apt/sources.list.d/passenger.list
Обновление списка пакетов:
$ sudo apt-get update
Разрешить его как unattended-upgrades
$ sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
Найдите или создайте этот блок конфигурации поверх файла:
// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
// you may have some instructions here
};
Добавьте следующее:
// Automatically upgrade packages from these (origin:archive) pairs
Unattended-Upgrade::Allowed-Origins {
// you may have some instructions here
// To check "Origin:" and "Suite:", you could use e.g.:
// grep "Origin\|Suite" /var/lib/apt/lists/oss-binaries.phusionpassenger.com*
"Phusion:stable";
};
Теперь (за) установить nginx-extra
и passenger
:
$ sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak_"$(date +%Y-%m-%d_%H:%M)"
$ sudo apt-get install nginx-extras passenger
настроить его
Раскомментируйте директивы passenger_root
и passenger_ruby
в файле /etc/nginx/nginx.conf
:
$ sudo nano /etc/nginx/nginx.conf
... получить что-то вроде:
##
# Phusion Passenger config
##
# Uncomment it if you installed passenger or passenger-enterprise
##
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/bin/passenger_free_ruby;
создать конфигурацию сайта nginx (виртуальный хост conf)
$ nano /etc/nginx/sites-available/gitlab.conf
server {
listen *:80;
server_name gitlab.mycompany.com;
server_tokens off;
root /opt/gitlab/embedded/service/gitlab-rails/public;
client_max_body_size 250m;
access_log /var/log/gitlab/nginx/gitlab_access.log;
error_log /var/log/gitlab/nginx/gitlab_error.log;
# Ensure Passenger uses the bundled Ruby version
passenger_ruby /opt/gitlab/embedded/bin/ruby;
# Correct the $PATH variable to included packaged executables
passenger_env_var PATH "/opt/gitlab/bin:/opt/gitlab/embedded/bin:/usr/local/bin:/usr/bin:/bin";
# Make sure Passenger runs as the correct user and group to
# prevent permission issues
passenger_user git;
passenger_group git;
# Enable Passenger & keep at least one instance running at all times
passenger_enabled on;
passenger_min_instances 1;
error_page 502 /502.html;
}
Теперь мы можем включить его:
$ sudo ln -s /etc/nginx/sites-available/gitlab.cong /etc/nginx/sites-enabled/
Нет эквивалента
a2ensite
, исходящего из nginx, поэтому мы используемln
, но если вы хотите, есть проект на github: nginx_ensite: nginx_ensite и nginx_dissite для быстрого включения и отключения виртуального хостаЭто оболочка (Bash) script, которая реплицирует для nginx Debian a2ensite и a2dissite для включения и отключения сайтов в качестве виртуальных хостов в Apache 2.2/2.4.
Сделано:-). Наконец, перезапустите nginx
$ sudo service nginx restart
С помощью этой новой конфигурации вы можете запускать другие виртуальные хосты рядом с gitlab для обслуживания того, что вы хотите
Просто создайте новые конфиги в /etc/nginx/sites-available
.
В моем случае я выполнил и обслуживал этот путь на том же хосте:
- gitlab.mycompany.com - удивительная платформа git, написанная на рубине
- ci.mycompany.com - сервер непрерывной интеграции gitlab, написанный на рубине
- npm.mycompany.com - частный npm реестр, записанный в
node.js
- bower.mycompany.com - частный bower реестр, записанный в
node.js
- packagist.mycompany.com - частный packagist для composer, написанный на php
Например, для обслуживания npm.mycompany.com
:
Создайте каталог для журналов:
$ sudo mkdir -p /var/log/private-npm/nginx/
И залейте новый конфигурационный файл vhost:
$ sudo nano /etc/nginx/sites-available/npm.conf
С помощью этой конфигурации
server {
listen *:80;
server_name npm.mycompany.com
client_max_body_size 5m;
access_log /var/log/private-npm/nginx/npm_access.log;
error_log /var/log/private-npm/nginx/npm_error.log;
location / {
proxy_pass http://localhost:8082;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Затем включите его и перезапустите:
$ sudo ln -s /etc/nginx/sites-available/npm.conf /etc/nginx/sites-enabled/
$ sudo service nginx restart