Как бы вы настроили веб-сервер Python с несколькими виртуальными хостами?

StackOverflow https://stackoverflow.com/questions/537399

Вопрос

Мне сказали, что лучше всего использовать wsgi, а не mod_python.Но более конкретно, как бы вы настроили серверную среду с несколькими веб-сайтами?Выбор веб-сервера и т.д.?

Это было полезно?

Решение

Apache+mod_wsgi — распространенный выбор.

Вот простой пример виртуального хоста, настроенного для сопоставления любых запросов к /wsgi/something приложению (которое затем может просмотреть PATH_INFO, чтобы выбрать действие, или как вы выполняете диспетчеризацию).Корневой URL-адрес «/» также направляется в приложение WSGI.

LoadModule wsgi_module /usr/local/lib/mod_wsgi.so
...

<VirtualHost *:80>
    ServerName                  www.example.com
    DocumentRoot                /www/example/htdocs
    WSGIScriptAliasMatch ^/$    /www/example/application.py
    WSGIScriptAlias      /wsgi  /www/example/application.py
</VirtualHost>

Если хотите, вы можете использовать директиву WSGIProcessGroup для разделения обработчиков для разных виртуальных хостов.Если вам нужно, чтобы сценарии виртуальных хостов запускались под разными пользователями, вам нужно будет использовать WSGIDaemonProcess вместо встроенного интерпретатора Python.

application.py при запуске оставит вызываемый вами WSGI в глобальной переменной application.Вы также можете добавить нижний колонтитул «Запуск от имени» для совместимости со старой школой CGI:

#!/usr/bin/env python
from mymodule import MyApplication

application= MyApplication()

if __name__=='main':
    import wsgiref.handlers
    wsgiref.handlers.CGIHandler().run(application)

Другие советы

Я бы порекомендовал Nginx в качестве веб-сервера.Быстрая и простая настройка.

Вероятно, вам захочется иметь одного пользователя unix на каждый виртуальный хост, чтобы каждый домашний каталог содержал свое собственное приложение, среду Python и конфигурацию сервера.Это позволяет вам безопасно перезапустить определенное приложение, просто убив рабочие процессы, принадлежащие вашему виртуальному хосту.

Просто совет, надеюсь, он поможет.

Вы можете использовать Apache и mod_wsgi.Таким образом, вы по-прежнему можете использовать встроенную поддержку Apache для виртуальных хостов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top