2010-11-17 4 views
23

Я настроил мой сервер разработки таким образом:Django + Apache & mod_wsgi: перезапуска апачский после изменения

Ubuntu, Apache, mod_wsgi, Python 2.6

Я работаю на сервере с другого компьютера, подключенного к нему ,

В большинстве случаев изменения не влияют на приложение, если я не перезапускаю Apache. В некоторых случаях изменения вступают в силу без перезапуска веб-сервера, но после того, как скажем, 3 или 4 страницы загружаются, приложение может вести себя так, как будто оно ведет себя раньше изменений.

До сих пор я просто перезагружался каждый раз, когда у меня был апач, поскольку у меня есть сервер разработки здесь, но АД через некоторое время так раздражает. Как я могу избежать этого?

Я не могу работать с сервером разработки, поскольку мне нужна среда, которая максимально приближена к исходной.

Благодаря

+0

Просто чтобы подтвердить, что в последнем случае, когда вы говорите, что не можете работать с сервером разработки, вы на самом деле имеете в виду использование 'manage.py runningerver'? –

+0

Показать соответствующие файлы конфигурации. В основном Id нравится видеть скрипт mod_wsgi, который запускает ваше приложение django. – rapadura

+0

Это сообщение в блоге может помочь вам: http://blog.dscpl.com.au/2008/12/using-modwsgi-when-developing-django.html ... и это: http://modwsgi.readthedocs.io /en/develop/user-guides/reloading-source-code.html – Raz

ответ

14

Мое предложение состоит в том, что вы запустите приложение в режиме демона. Таким образом вам не потребуется перезапускать apache, только touch my_handler.wsgi, и демон будет знать, чтобы перезапустить приложение. Apache httpd не будет только вашим (в производстве), поэтому справедливо не перезапускать его при каждом обновлении.

+1

Если вы используете «изящный», он не должен отрицательно влиять на другие запросы. И в любом случае, поскольку OP отмечает, что это только для его сервера разработки, не так ли? –

+0

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

-1

Apache загружает среду Django при запуске и продолжает работать даже при изменении источника.

Я предлагаю вам использовать Django 'runningerver' (который автоматически перезапускается при изменениях) в тяжелых сессиях разработки, если вам не нужны некоторые специфичные для Apache функции (такие как многопоточные).

Обратите внимание, что изменения в шаблонах не требуют перезапуска веб-сервера.

+1

Вторая ссылка из сообщения Raz предоставляет скрипт для автоматической перезагрузки проекта при каждом изменении файла, который не предполагает перезапуска apache и не использует использование сервера запуска. –

+0

Извините, я неправильно прочитал сообщение и дал ответ для Windows, который не поддерживает режим демона. – Don

6

Никаких изменений не требуется, чтобы вы выполнили RESTART. Вам просто нужно перезагрузить, используя «sudo /etc/init.d/apache2 reload». Который у меня есть aliased в моем bashrc к 'a2reload'.

function a2reload(){ 
sudo /etc/init.d/apache2 reload 
} 
Смежные вопросы