Как применить изменения на django-сервере(ubuntu, nginx, uwsgi) без перезагрузки?

Здравствуйте.
Столкнулся с такой проблемой: для применения изменений в проекте приходится перезагружать ОС.
Сервер с ubuntu 12.04, nginx, uwsgi, python2.7, Django1.6
Следующий набор команд не помогает:
sudo uwsgi --stop /path/to/uwsgi.ini
sudo service nginx restart
sudo uwsgi --ini /path/to/uwsgi.ini
  • Вопрос задан
  • 13789 просмотров
Решения вопроса 1
alternativshik
@alternativshik
man uwsgi touch-reload
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
un1t
@un1t
Как минимум можно рестартануть uwsgi
sudo service uwsgi restart
Ответ написан
Комментировать
@kesn
Для uwsgi - touch-reload, как уже сказали.

Вдогонку, увидев ужасное sudo service nginx restart:
sudo nginx -s reload
nginx beginners guide
Ответ написан
Комментировать
Sergei_Erjemin
@Sergei_Erjemin
Улыбайся, будь самураем...
В настройках uwsgi.ini надо добавить параметрtouch-reload. Он указывает на имя файла при изменении которого происходит авторестарт приложения. Можно написать bash-скрипт который просто добавляет в этот файл что-то типа restart [текущая дата и время] и получится нечто вроде лога перезапуска django.

На практике (по крайне мере у меня) все авторестартится даже если происходят изменения в любом python-файле проекта. Не знаю почему так. В uwsgi.ini проекта стоит:
touch-reload = /home/[user]/[адрес сайта]/logs/[адрес_сайта]_reload.log
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы