Назад | Перейти на главную страницу

Запуск двух веб-приложений на Apache 2.4

Я пытаюсь запустить два приложения на своем сервере Linux apache:

А чтобы подключить их с удаленного компьютера, я использую те httpd файлы конфигурации:

Для OpenProject:

Include /etc/openproject/addons/apache2/includes/server/*.conf

<VirtualHost *:80>
  ServerName 198.162.12.13
  DocumentRoot /opt/openproject/public

  ProxyRequests off

  Include /etc/openproject/addons/apache2/includes/vhost/*.conf

  # Can't use Location block since it would overshadow all the other proxypass directives on CentOS
  ProxyPass /openproject/ http://127.0.0.1:6000/openproject/ retry=0
  ProxyPassReverse /openproject/ http://127.0.0.1:6000/openproject/
</VirtualHost>

Для pgAdmin:

<VirtualHost *:80>

    ServerName 198.162.214.23
    WSGIScriptAlias /pgadmin4 /usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.wsgi
    WSGIDaemonProcess pgadmin processes=1 threads=25

    <Directory /usr/lib/python2.7/site-packages/pgadmin4-web/>
        WSGIProcessGroup pgadmin
        WSGIApplicationGroup %{GLOBAL}
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
    </Directory>

</VirtualHost>

А теперь начинается волшебство (для меня) и в чем заключается мой вопрос:

взгляните на имена серверов в обоих файлах, pgAdmin содержит мой фактический IP-адрес, а OpenProject имеет случайный IP-адрес.

При такой настройке pgAdmin работает, а OpenProject - нет.

Как правило, без конфигурации для pgAdmin OpenProject работает с любым IP-адресом, что для меня странно, поэтому мой первый вопрос: почему ???

Итак, подведем итоги:

Если я настрою в обоих файлах свой фактический IP-адрес, тогда OpenProject будет работать, а pgAdmin - нет.

Если я установил в обоих файлах какой-то случайный IP-адрес, тогда OpenProject будет работать, а pgAdmin - нет.

Если я настроил фактический IP для OpenProject, случайный для pgAdmin, тогда OpenProject будет работать, а pgAdmin - нет.

Если я настрою случайный IP-адрес для OpenProject, фактический IP-адрес для pgAdmin, тогда OpenProject не будет работать, но pgAdmin работает.

Почему так запутано? Как настроить эти файлы, чтобы оба приложения работали должным образом?

Чтобы запустить несколько отдельных веб-сайтов / приложений на одном IP-адресе, у вас есть примерно три варианта:

  • Вы устанавливаете каждое приложение по разным URL-адресам, т.е. $(hostname)/app1 и /app2.

Если оба приложения нужно установить в корень / ваши варианты:

  • запускать несколько виртуальных веб-серверов с разными номерами портов и http://$(hostname):81/ покажет одно приложение и http://$(hostname):82/ может показать другой

  • запускать несколько виртуальных веб-серверов под разными именами хостов и выполнять виртуальный хостинг на основе имени. затем http://app1.example.com/ может показать одно приложение и http://app2.example.com/ покажет другой

В вашей конфигурации появляется попытка использовать этот последний параметр, но поскольку оба определения VirtualHost настроены с одинаковыми ServerName Apache не может их различить.

Используйте DNS для создания двух имен (например, openproject.example и pgadmin.example) указывая на фактический адрес (по-видимому, 198.162.12.13) вашего сервера. Настройте эти имена в соответствующих ServerName настройки и использовать http: //openproject.example и http: //pgadmin.example чтобы получить к ним доступ.