выход супервизора с ENOENT

Я пытаюсь развернуть веб-приложение Django впервые, используя NGINIX, Gunicorn и Supervisor на сервере Digital Ocean Ubuntu 16.04. Я следую это связанное руководство.

У меня проблема с настройкой Supervisor. При выполнении этой команды...

sudo supervisorctl status automatedre

Я получаю эту ошибку...

automatedre               FATAL     Exited too quickly (process log may have details)

Лог-файл показывает это...

supervisor: couldn't exec /home/automatedre/gunicorn_start: ENOENT
supervisor: child process was not spawned
supervisor: couldn't exec /home/automatedre/gunicorn_start: ENOENT
supervisor: child process was not spawned

/home/automatedre/gunicorn_start

#!/bin/bash

NAME="django_automatedre"
DIR=/home/automatedre/automatedre
USER=automatedre
GROUP=automatedre
WORKERS=3
BIND=unix:/home/automatedre/run/gunicorn.sock
DJANGO_SETTINGS_MODULE=automatedre.settings
DJANGO_WSGI_MODULE=automatedre.wsgi
LOG_LEVEL=error

cd $DIR
source ../venv/bin/activate

export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DIR:$PYTHONPATH

exec ../venv/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
  --name $NAME \
  --workers $WORKERS \
  --user=$USER \
  --group=$GROUP \
  --bind=$BIND \
  --log-level=$LOG_LEVEL \
  --log-file=-

/etc/supervisor/conf.d/automatedre.conf

[program:automatedre]
command=/home/automatedre/gunicorn_start
user=automatedre
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/home/automatedre/logs/gunicorn.log

Я не уверен, куда идти отсюда. Я не думаю, что это проблема с правами доступа к файлу, так как ранее я изменил разрешение на gunicorn_start с помощью этого...

chmod u+x gunicorn_start

Любые идеи о том, где я ошибаюсь?


person Spencer Rowland    schedule 25.02.2018    source источник


Ответы (2)


Ранее я исключил приведенный ниже текст из файла журнала, потому что не думал, что это уместно... ошибка.

/home/automatedre/gunicorn_start: 2: /home/automatedre/gunicorn_start: ^M: not found
/home/automatedre/gunicorn_start: 12: /home/automatedre/gunicorn_start: ^M: not found
/home/automatedre/gunicorn_start: 13: cd: can't cd to /home/automatedre/automatedre^M
/home/automatedre/gunicorn_start: 14: /home/automatedre/gunicorn_start: source: not found
/home/automatedre/gunicorn_start: 15: /home/automatedre/gunicorn_start: ^M: not found
/home/automatedre/gunicorn_start: 18: /home/automatedre/gunicorn_start: ^M: not found
/home/automatedre/gunicorn_start: 19: exec: ../venv/bin/gunicorn: not found

Сначала я создал /home/automatedre/gunicorn_start и /etc/supervisor/conf.d/automatedre.conf в текстовом редакторе Brackets на моем компьютере с Windows, который создал эту проблему. .

Покопавшись еще немного, я узнал, что Windows/MS-DOS использует CR+LF для обозначения конца строки, а UNIX использует символ LF для обозначения конца строки (символ EOL).

Эта разница привела к тому, что ^M в конце каждой строки вызывало ошибку «путь к файлу не найден».

Воссоздание каждого файла с терминала с помощью nano решило проблему.

person Spencer Rowland    schedule 26.02.2018

Чтобы получить больше информации, вы можете изменить LOG_LEVEL=error на LOG_LEVEL=debug.

person Ralf    schedule 26.02.2018
comment
Спасибо, Ральф. Это будет полезно в моих будущих приключениях по отладке. - person Spencer Rowland; 27.02.2018