#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-путь, к которому осуществляется доступ. Имя сервера должно оставаться чистым.