У меня есть развертывание apache2 / mod-wsgi, обслуживающее несколько доменов, по сути, с одним приложением.
Все домены обслуживаются как на 80, так и на 443 портах.
Итак, моя конфигурация будет выглядеть примерно так:
<VirtualHost *:80>
#ServerName www.example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
WSGIDaemonProcess example processes=2 threads=12 python-path=/app_path
WSGIProcessGroup example
WSGIScriptAlias / /scripthome
......
</VirtualHost>
<VirtualHost *:80>
ServerName example.com
Redirect permanent / http://www.example.com/
</virtualHost>
<VirtualHost _default_:443>
ServerName www.example.com
ErrorLog ${APACHE_LOG_DIR}/error_easyset_ssl.log
CustomLog ${APACHE_LOG_DIR}/access_easyset_ssl.log combined
WSGIDaemonProcess example_ssl processes=2 threads=12 python-path=/app_path
WSGIProcessGroup example_ssl
WSGIScriptAlias / /scripthome
SSLEngine on
........
</VirtualHost>
Скопируйте и вставьте это для всех других доменов, и мы получим сервер, на котором запущено множество процессов демона для того, что на самом деле является всего лишь одним приложением. Обратите внимание, что логика, зависящая от домена, обрабатывается в приложении, поэтому все остальные файлы конфигурации домена такие же, за исключением путей к файлам сертификатов SSL. До того, как понадобился SSL, для всего этого был только один VirtualHost. Это видно из приведенных выше отрывков конфигурации, поскольку я все еще использую один VirtualHost для всех запросов порта 80 ко всем доменам (имя сервера закомментировано).
Это трата ресурсов сервера, поэтому я начал изучать документация на как исправить этот. Вот соответствующий раздел (ближе к концу WSGIDaemonProcess
страница):
Если директива WSGIDaemonProcess указан вне всех контейнеров виртуального хоста, любое приложение WSGI может быть делегировано для запуска в этой группе процессов демона. Если указана директива WSGIDaemonProcess в контейнере виртуального хоста, только приложения WSGI, связанные с виртуальными хостами с тем же именем сервера, что и этот виртуальный хост, могут быть делегированы этому набору процессов демона.
Теперь, очевидно, что SSL не позволяет мне использовать вторую часть, выделенную жирным шрифтом, но позволяет использовать первую.
Моя проблема в том, что я не знаю, как пользоваться первым. Как указать конфигурацию mod-wsgi вне VirtualHost
блок?
Вы можете настроить директиву WSGIDaemonProcess, а также другие директивы в файле wsgi.conf модуля wsgi, расположенном в подкаталоге с поддержкой модов вашей конфигурации apache.
Так что это должно быть что-то вроде /etc/apache2/mods-enabled/wsgi.conf