Gunicorn и Django с выскочкой и Nginx

Прежде всего, у меня есть много инстансов Django, которые настроены и работают так.

В каждом проекте у меня есть скрипт shell.sh, который запускает gunicorn и т.д.:

 #!/bin/bash
  set -e
  LOGFILE=/var/log/gunicorn/app_name.log
  LOGDIR=$(dirname $LOGFILE)
  NUM_WORKERS=3
  # user/group to run as
  USER=root
  GROUP=root
  PORT=8060
  IP=127.0.0.1
  cd /var/www/webapps/app_name
  source ../bin/activate
  test -d $LOGDIR || mkdir -p $LOGDIR
  exec /var/www/webapps/bin/gunicorn_django -b $IP:$PORT -w $NUM_WORKERS \
    --user=$USER --group=$GROUP --log-level=debug --log-file=$LOGFILE 2>>$LOGFILE

При запуске этого скрипта из командной строки с помощью bash script.sh сайт работает отлично, поэтому Nginx настроен правильно.

Как только я использую upstart с именем service app_name, приложение запускается, а затем просто останавливается. Он даже не пишет в файл журнала.

Это файл app_name.conf в /etc/init/app_name.conf:

description "Test Django instance"
start on runlevel [2345]
stop on runlevel [06]
respawn
respawn limit 10 5
exec /var/www/webapps/app_name/script.sh

Так в чем здесь проблема? Причина запуска из командной строки работает, но выполнение корыто запуска не работает. И я не знаю, где посмотреть, что не так?

1 ответ

Решение

Ну, я понял это. Если кто-нибудь когда-нибудь столкнется с чем-то вроде этого...

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

Закомментировав каждую строку файла скрипта, я обнаружил проблему со строкой: source../bin/activate и все после этого.

Проблема состояла в том, что у него было 2 пробела впереди, и теперь я знаю, что его нужно выровнять до конца. Теперь это работает.

Вот как я понял это:

tail -f /var/log/syslog
Jun 26 10:54:59 saturn7 init: app_name main process (3521) terminated with status 127

Я обнаружил, что статус 127 - это в основном команда, которая не найдена. Итак, я знаю, что проблема была на самом деле в файле сценария.

Но я не уверен, почему bash ./script.sh сработает и не скажет мне, что что-то не так? Мне нужно прочитать о скриптах Schell..

Другие вопросы по тегам