Следующее решение предназначено только для пользователей Linux и протестировано для работы под Ubuntu Server 12.04.1
Чтобы запустить WSGI в режиме демона, вам необходимо указать директивы WSGIProcessGroup
и WSGIDaemonProcess
в файле конфигурации Apache, например
WSGIProcessGroup my_wsgi_process
WSGIDaemonProcess my_wsgi_process threads=15
Более подробная информация доступна в http://code.google.com/p/modwsgi/wiki/ConfigurationDirectives
Дополнительным бонусом является дополнительная стабильность, если вы используете несколько сайтов WSGI на одном сервере, возможно, с директивами VirtualHost. Без использования процессов-демонов я обнаружил, что два сайта Django конфликтуют друг с другом и поочередно обнаруживают 500 внутренних ошибок сервера.
На этом этапе ваш сервер фактически уже отслеживает изменения на вашем сайте WSGI, хотя он только просматривает файл, указанный вами с помощью WSGIScriptAlias
, например
WSGIScriptAlias / /var/www/my_django_site/my_django_site/wsgi.py
Это означает, что вы можете принудительно перезагрузить процесс демона WSGI, изменив сценарий WSGI. Конечно, вам не нужно менять его содержимое, скорее,
$ touch /var/www/my_django_site/my_django_site/wsgi.py
сделает трюк.
Используя описанный выше метод, вы можете автоматически перезагружать сайт WSGI в производственной среде без перезапуска / перезагрузки всего сервера Apache или изменения сценария WSGI для выполнения небезопасного мониторинга изменений кода.
Это особенно полезно, когда у вас есть сценарии автоматического развертывания, и вы не хотите перезапускать сервер Apache при развертывании.
Во время разработки вы можете использовать средство отслеживания изменений файловой системы для вызова touch wsgi.py
каждый раз, когда изменяется модуль под вашим сайтом, например, pywatch