@DarkByte2015

Запуск django-приложения на проде?

Я пытаюсь (уже неделю!) запустить django-приложение на проде. Вот уже все этапы пройдены, выхожу на финишную прямую! :D Я могу нормально запускать с gunicorn приложение, nginx раздает статику, все ок. Теперь мне надо чтобы оно собственно работало постоянно, а не только когда я его с консоли запустил. Нагуглил много разных демонов для этого (следящих за запущенностью гуникорна), но больше всего мне понравился runit. Очень уж просто все - кидается sh скрипт, в котором задается команда для запуска. Что мне особенно удобным показалось это то что тут именно скрипт, а не конфиг. Можно задать переменные для команды (она довольно длинная выходит).

Так вот в чем проблема: он то работает то нет. Иногда я запускаю и все с первого раза работает. Потом я что-то меняю (не в скрипте runit, а проекте или конфиге нжинкса) и он перестает запускаться. :( Причем вручную с консоли я все также могу запустить гуникорн без проблем. И даже когда я просто запускаю этот самый sh скрипт с консоли (который должен запускать runit) это работает отлично. Но когда я пытаюсь сделать "sv start myapp" (или restart) то пишет "timeout: down: myapp: 1s, normally up, want up" или еще интереснее "ok: run: myapp: (pid 49720) 0s", но при этом ничего не запускается и статус остается down (можно проверить командой sv status myapp или посмотреть в файле stat который создает runit). Самое главное я не пойму пишет ли он какие-то логи? Где их можно посмотреть? В syslog пусто. Как понять чего ему надо? Почему иногда он стартует нормально, а иногда тупит?

Так выглядит мой run (скрипт запуска для runit):

#!/bin/sh

GUNICORN=/root/.virtualenvs/certificate_generator/bin/gunicorn
ROOT=/var/www/sup78user/data/www/certificate_generator
PID=$ROOT/run/gunicorn.pid
ACCESS_LOG=$ROOT/logs/gunicorn-access.log
ERROR_LOG=$ROOT/logs/gunicorn-error.log

APP=certificate_generator.wsgi:application

if [ -f $PID ]; then rm $PID; fi

exec $GUNICORN \
    --access-logfile $ACCESS_LOG \
    --error-logfile $ERROR_LOG \
    --pid $PID \
    --bind :8000 \
    --chdir $ROOT \
    $APP
  • Вопрос задан
  • 296 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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