Я пытаюсь запустить два приложения на своем сервере 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-адресе, у вас есть примерно три варианта:
$(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 чтобы получить к ним доступ.