Reputation: 81
I am attempting to deploy a Django web application for the first time using NGINIX, Gunicorn and Supervisor on Digital Ocean Ubuntu 16.04 server. I am following the this linked tutorial.
I am having a trouble configuring Supervisor. When running this command...
sudo supervisorctl status automatedre
I get this error...
automatedre FATAL Exited too quickly (process log may have details)
The log file shows this...
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
I'm not sure where to go from here. I don't believe it is a file permission issue since I previously changed permission on gunicorn_start with this...
chmod u+x gunicorn_start
Any ideas on where I'm going wrong?
Upvotes: 4
Views: 8465
Reputation: 182
In case someone have this same issue and have already verified that the directory
path is OK, go and check that there are no leading spaces on the lines of the configuration file for this specific unit or rule for the program.
wrong:
[program:celerybeat]
command=/usr/...
directory=/home/...
user=...
...
Right
[program:celerybeat]
command=/usr/...
directory=/home/...
user=...
Upvotes: 0
Reputation: 81
I previously left out the text below from the log file because I didn't think it was relevant...mistake.
/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
I initially created the /home/automatedre/gunicorn_start and /etc/supervisor/conf.d/automatedre.conf in my Brackets text editor on my windows machine which created this issue.
After doing some more digging, I learned that Windows/MS-DOS uses CR+LF to indicate end-of-lines and UNIX uses LF character to indicate line termination (EOL character).
This difference resulted in the ^M at the end of each line causing the file path not found error.
Recreating each file from the terminal with nano solved the issue.
Upvotes: 4
Reputation: 16485
To get more info you could change LOG_LEVEL=error
to LOG_LEVEL=debug
.
Upvotes: 0