linux - 多站点托管的 Gunicorn 设置

标签 linux django gunicorn

我很难在虚拟环境中执行 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/

相关文章:

linux - 关闭 STDOUT 如何影响 printf

linux - 编译期间未使用对 GCC 规范文件的编辑

Django 每次在运行的服务器上都显示 Zen Poetry

python - 如何仅在添加而不是编辑时验证 django 表单

Python Uvicorn——获取SSL证书信息

mysql - 无法连接到 sphinx 数据库

linux - 修改内核调度程序,为特定程序提供更长的时间片

Django makemigrations 应用程序顺序

python - Flask部署

python - 使用nginx和gunicorn来服务django