我正在使用Digital Ocean Ubuntu服务器来部署我的Django项目并按照本指南进行设置:A Complete Beginner's Guide to Django - Part 7
我是配置Gunicorn和Supervisor的过程,我收到以下错误:
我以非root身份登录,但我创建的sudo用户名为betofolio。我的django项目叫做betofolio。
按照教程中的步骤进行操作:
在/ home / betofolio中创建名为gunicorn_start的新文件:
vim gunicorn_start
我插入以下内容:
#!/bin/bash
NAME="betofolio"
DIR=/home/betofolio/betofolio
USER=betofolio
GROUP=betofolio
WORKERS=3
BIND=unix:/home/betofolio/run/gunicorn.sock
DJANGO_SETTINGS_MODULE=betofolio.settings
DJANGO_WSGI_MODULE=betofolio.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=-
然后我保存并退出。
使此文件可执行:
chmod u+x gunicorn_start
创建两个空文件夹,一个用于套接字文件,另一个用于存储日志:
mkdir run logs
配置主管
在/ home / betofolio / logs /文件夹中创建一个空日志文件:
touch logs/gunicorn.log
现在创建一个新的超级用户文件:
sudo vim /etc/supervisor/conf.d/betofolio.conf
[program:betofolio]
command=/home/betofolio/gunicorn_start
user=betofolio
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/home/betofolio/logs/gunicorn.log
然后:
sudo supervisorctl reread
sudo supervisorctl update
现在检查状态:
sudo supervisorctl status betofolio
我是linux和网络的新手,所以我不知道如何解决这个问题
答案 0 :(得分:0)
我正在遵循相同的指南,并遇到了同样的问题。为我解决的是我意识到我的虚拟环境中没有安装gunicorn。我做了pip3 install gunicorn
,但你需要做pip install gunicorn
。如果它说你没有得到许可,你可能不得不说sudo(sudo pip install gunicorn
)
less gunicorn.logs
以查看它。它会告诉你它为什么会失败。在我的情况下,它说它无法在gunicorn_start文件中指定的位置找到gunicorn。(name of virtual env) $...
ls
以查看目录中的文件,并查看gunicorn是否在那里。修复后,它仍然无法运行,我在日志文件中意识到我在gunicorn_start文件中有一些拼写错误,因此日志文件非常便于排除故障。