3

Debianサーバーにdjangoプロジェクトをセットアップし、virtualenvwrapperをインストールしています。コマンドラインからは正常に動作しますが、スクリプトからアクティブ化したいと考えています。スクリプトの他のすべては正常に動作しますが、virtualenvwrapper でエラーが発生します。

これが私のスクリプトです:

#!/bin/bash

source /usr/local/bin/virtualenvwrapper.sh

NAME="mark"                                      # Name of the application
DJANGODIR=~/webapps                      # Django project directory
SOCKFILE=~/webapps/mark/run/gunicorn.sock        # we will communicte using this unix socket
USER=root                                            # the user to run as
GROUP=root                                                   # the group to run as
NUM_WORKERS=3                                                # how many worker processes should Gunicorn spawn
DJANGO_SETTINGS_MODULE=mark.settings             # which settings file should Django use
DJANGO_WSGI_MODULE=mark.wsgi                     # WSGI module name

echo "Starting $NAME"

# Activate the virtual environment
cd $DJANGODIR
workon mark
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 ~/Envs/mark/bin/gunicorn ${DJANGO_WSGI_MODULE}:application \
  --name $NAME \
  --workers $NUM_WORKERS \
  --user=$USER --group=$GROUP \
  --log-level=debug \
  --bind=unix:$SOCKFILE

そして私のログ:

Starting mark
ERROR: Environment 'mark' does not exist. Create it with 'mkvirtualenv mark'.
2013-10-20 13:54:28 [31640] [INFO] Starting gunicorn 18.0
2013-10-20 13:54:28 [31640] [DEBUG] Arbiter booted
2013-10-20 13:54:28 [31640] [INFO] Listening at: unix:/root/webapps/mark/run/gunicorn.sock (31640)
2013-10-20 13:54:28 [31640] [INFO] Using worker: sync
2013-10-20 13:54:28 [31661] [INFO] Booting worker with pid: 31661
2013-10-20 13:54:28 [31662] [INFO] Booting worker with pid: 31662
2013-10-20 13:54:28 [31663] [INFO] Booting worker with pid: 31663

どんな助けでも大歓迎です!また、root ユーザーを使用するのは悪いことだと思いますが、これは初めてです。

4

2 に答える 2

1

これを試して、bash スクリプトを実行します。. ./script.sh

于 2013-10-21T09:49:47.953 に答える
1

workon コマンドを使用せずにアクティブ化したところ、機能しました。

source <path to your env>

環境へのパスが必要な場合は、次のことができます。

workon <your env name>
cdvirtualenv
pwd

そして、あなたの道があります。

于 2013-11-08T15:28:45.040 に答える