【问题标题】:supervisor exiting with ENOENT主管以 ENOENT 退出
【发布时间】:2018-02-25 22:59:37
【问题描述】:

我第一次尝试在 Digital Ocean Ubuntu 16.04 服务器上使用 NGINIX、Gunicorn 和 Supervisor 部署 Django Web 应用程序。我正在关注this linked tutorial

我在配置 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

关于我哪里出错了有什么想法吗?

【问题讨论】:

    标签: django gunicorn supervisord


    【解决方案1】:

    我之前从日志文件中省略了下面的文本,因为我认为它不相关......错误。

    /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
    

    我最初在我的 Windows 机器上的括号文本编辑器中创建了 /home/automatedre/gunicorn_start/etc/supervisor/conf.d/automatedre.conf创建了这个问题。

    在做了更多的挖掘之后,我了解到Windows/MS-DOS uses CR+LF to indicate end-of-lines and UNIX uses LF character to indicate line termination (EOL character)

    这种差异导致每行末尾的 ^M 导致找不到文件路径错误。

    使用 nano 从终端重新创建每个文件解决了这个问题。

    【讨论】:

      【解决方案2】:

      要获取更多信息,您可以将LOG_LEVEL=error 更改为LOG_LEVEL=debug

      【讨论】:

      • 谢谢拉尔夫。这将有助于我以后的调试冒险。