Несколько виртуальных хостов для двух сайтов python, один доминирует

#python #apache #flask #mod-wsgi #web2py

#python #apache #мод-wsgi

Вопрос:

Я пытаюсь настроить сервер apache на сервере Mac для обслуживания как приложения Web2Py, так и приложения Flask. Это стало мягким кошмаром. Я бы хотел, чтобы пользователи могли переходить по следующим URL-адресам

http:/my.domain.com/ — Сайт Web2py

http:/my.domain.com/suburl — Сайт Flask

К сожалению, когда я посещаю suburl, он всегда приводит меня на сайт Web2py (который затем выходит из себя, потому что там нет приложения с именем suburl). Вот мой .conf файл:

 NameVirtualHost *:80
# Flask Site
<VirtualHost *:80>
   ServerName my.domain.com/suburl
   WSGIDaemonProcess flask-suburl user=_www group=_www
   WSGIProcessGroup flask-suburl
   WSGIScriptAlias /suburl /Users/myname/suburl/app.wsgi
   <Directory /Users/myname/suburl>
      WSGIApplicationGroup %{GLOBAL}
      Order deny,allow
      Allow from all
   </Directory>
</VirtualHost>

# Web2py Site
<VirtualHost *:80>
   ServerName my.domain.com
   WSGIDaemonProcess web2py-main user=_www group=_www
   WSGIProcessGroup web2py-main
   WSGIScriptAlias / /Users/myname/web2py/wsgihandler.py
   <Directory /Users/myname/web2py>
      AllowOverride None
      Order Allow,Deny
      Deny from all
      <Files wsgihandler.py>
         Allow from all
      </Files>
   </Directory>
</VirtualHost>
  

Переупорядочение двух определений виртуальных хостов ничего не дает. Удаление сайта Web2py позволяет мне получить доступ к сайту Flask.

Я бы предпочел не объединять их в один виртуальный хост, потому что это вызывает проблемы с двумя приложениями, использующими один и тот же интерпретатор Python, и некоторые расширения C, по-видимому, выходят из строя.

Я изменил домен и несколько других имен, чтобы скрыть защищенную информацию. Я также исключаю несколько команд AliasMatch, которые обрабатывают обслуживание статических вложенных папок. Есть также другой виртуальный хост для SSH-сервера на порту 443, но я не включил его, потому что ожидаю, что это не повлияет на ситуацию.

Итак, как мне сделать так, чтобы я мог посещать оба сайта, вместо того, чтобы сайт Web2py поглощал все?

Ответ №1:

Для всех, кто приходит сюда, я решил свою проблему. Это была простая ошибка, и я мог бы поклясться, что пробовал это раньше.

В конфигурации для сайта Flask я должен был сделать:

 ServerName my.domain.com
...
WSGIScriptAlias /suburl /Users/myname/suburl/app.wsgi
  

Обратите внимание, что /suburl в конце его больше нет имени сервера. Вместо этого убедитесь, что это было добавлено к первому аргументу WSGIScriptAlias . Рассуждения становятся понятными, когда вы смотрите на документацию для WSGIScriptAlias; первый аргумент — это URL-путь, к которому осуществляется доступ. Имя сервера должно оставаться чистым.