我很难在虚拟环境中执行 gunicorn,以下是我的设置,因为我遇到文件夹的 Linux 访问错误。我是 Linux 新手,所以请多多指教。可以在下面的设置中看到错误:
#!/bin/bash
NAME="myproject" # Name of the application
DJANGODIR=/django/myproject # Django project directory
SOCKFILE=/django/run/gunicorn.sock # we will communicte using this unix socket
USER=django # the user to run as
GROUP=django # the group to run as
NUM_WORKERS=3 # how many worker processes should Gunicorn spawn
DJANGO_SETTINGS_MODULE=myproject.settings # which settings file should Django use
DJANGO_WSGI_MODULE=myproject.wsgi:application # WSGI module name
echo "Starting $NAME as `whoami`"
# Activate the virtual environment
cd $DJANGODIR
source ../bin/activate
export DJANGO_SETTINGS_MODULE=$DJANGO_SETTINGS_MODULE
export PYTHONPATH=$DJANGODIR:$PYTHONPATH
# Create the run directory if it doesn't exist
RUNDIR=$(dirname $SOCKFILE)
test -d $RUNDIR || mkdir -p $RUNDIR
# Start your Django Unicorn
# Programs meant to be run under supervisor should not daemonize themselves (do not use --daemon)
exec ../bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--user=$USER --group=$GROUP \
--bind=unix:$SOCKFILE \
--log-level=debug \
--log-file=-
错误:
(myproject)django@vps:~/myproject$ bin/gunicorn_start.sh
Starting: command not found
(myproject)django@vps:~/myproject$ bin/gunicorn_start.sh: line 15: cd: /django/myproject: No such file or directory
-su: bin/gunicorn_start.sh:: No such file or directory
(myproject)django@vps:~/myproject$ bin/gunicorn_start.sh: line 16: ../bin/activate: No such file or directory
-su: bin/gunicorn_start.sh:: No such file or directory
(myproject)django@vps:~/myproject$ mkdir: cannot create directory ‘/django’: Permission denied
No command 'mkdir:' found, did you mean:
Command 'mkdir' from package 'coreutils' (main)
mkdir:: command not found
(myproject)django@vps:~/myproject$ bin/gunicorn_start.sh: line 26: /home/django/myproject/../bin/gunicorn: No such file or directory
我正在关注 link配置启动脚本,我创建了一个用户“django”。
在我将“DJANGODIR”更改为/home/Django/myproject 之后,我现在遇到了这两个错误。
(myproject)django@vps:~/myproject$ bin/gunicorn_start.sh
Starting myproject as django
bin/gunicorn_start.sh: line 16: ../bin/activate: No such file or directory
mkdir: cannot create directory ‘/django’: Permission denied
bin/gunicorn_start.sh: line 26: /home/django/myproject/../bin/gunicorn: No such file or directory
(myproject)django@vps:~/myproject$
我已经将我的 gunicorn upstart 脚本中的 4 行更改为完整路径,例如:
DJANGODIR=/home/django/myproject
SOCKFILE=/home/django/myproject/run/gunicorn.sock
source /home/django/myproject/bin/activate
exec /home/django/myproject/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
有一个额外的“应用程序”参数,我为此收到了错误。我已经删除了上面第四行中的应用程序,并且能够运行该脚本。现在 gunicorn 正在运行,但由于 myproject.com 未显示,我无法启动该项目。如何在此脚本中绑定(bind)端口?
最佳答案
我要给你的答案是基于一个假设,我认为你的 $DJANGODIR
应该是 /home/django/myproject
但你有它指向属于 root 的 /django/myproject
,这就是为什么您的程序无法创建该文件夹。
如果我的假设不正确,请发布您的文件所在位置及其权限。您可以使用 ls -l filename
获取文件的权限,使用 ls -ld directory
获取目录的权限。
希望这对您有所帮助!
关于linux - 多站点托管的 Gunicorn 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36026499/