【问题标题】:Gunicorn Settings for multisite hosting多站点托管的 Gunicorn 设置
【发布时间】:2016-03-16 03:55:15
【问题描述】:

我很难在虚拟环境中执行 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 没有出现,我无法启动该项目。如何在此脚本中绑定端口?

【问题讨论】:

    标签: linux django gunicorn


    【解决方案1】:

    我要给你的答案是基于一个假设,我认为你的 $DJANGODIR 应该是 /home/django/myproject 但你让它指向属于 root 的 /django/myproject,这就是为什么你的程序无法创建文件夹。

    如果我的假设不正确,请发布您的文件所在的位置及其权限。您可以使用ls -l filename 获取文件的权限,使用ls -ld directory 获取目录的权限。

    希望这会有所帮助!

    【讨论】:

    • 我的 Django 用户对我创建的文件夹拥有完全的权限/权限,并且位置是 /home/Django/myproject。同一用户下的项目之一,但没有任何 virtualenv 工作正常。我实际上使用的是 DigitalOceanOne 点击安装图像,我的文件夹权限和文件位置与digitalocean.com/community/tutorials/… 完全相同。我已经粘贴了原始问题更改的结果。
    • 事实证明,基于完整路径的设置使 gunicorn 运行,我现在能够让事情正常运行。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2019-07-03
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2011-05-02
    • 2018-12-19
    • 2013-11-05
    • 1970-01-01
    相关资源
    最近更新 更多