2012-08-27 14 views
6

के साथ डीजेगो को तैनात करें मेरे पास एक Django प्रोजेक्ट है और मैं इसे बंदूक (और अपाचे प्रॉक्सींग) का उपयोग करके डिलीवरी करना चाहता हूं। मैं Nginx का उपयोग नहीं कर सकता, इसलिए यह संभव नहीं है।गनिकोर्न और एपैच

मैं अपाचे प्रॉक्सी और सेटअप gunicorn लिए एक धावक स्क्रिप्ट निर्धारित किया है, लेकिन मैं इस अजीब त्रुटि

2012-08-27 14:03:12 [34355] [DEBUG] GET/
2012-08-27 14:03:12 [34355] [ERROR] Error handling request 
Traceback (most recent call last): 
    File "/home/tileone/venv/lib/python2.6/site-packages/gunicorn/workers/sync.py", line 93, in handle_request 
    self.address, self.cfg) 
    File "/home/tileone/venv/lib/python2.6/site-packages/gunicorn/http/wsgi.py", line 146, in create 
     path_info = path_info.split(script_name, 1)[1] 
    IndexError: list index out of range 

मैं इस स्क्रिप्ट

#!/bin/bash 
LOGFILE=/var/log/gunicorn/one-project.log 
VENV_DIR=/path/to/venv/ 
LOGDIR=$(dirname $LOGFILE) 
NUM_WORKERS=5 
# user/group to run as 
USER=USER 
GROUP=GROUP 
BIND=127.0.0.1:9999 
cd /path_to_project 
echo 'Setup Enviroment' 
#some libraries 
echo 'Setup Venv' 
source $VENV_DIR/bin/activate 
export PYTHONPATH=$VENV_DIR/lib/python2.6/site-packages:$PYTHONPATH 
#Setup Django Deploy 
export DJANGO_DEPLOY_ENV=stage 
echo 'Run Server' 
test -d $LOGDIR || mkdir -p $LOGDIR 
export SCRIPT_NAME='/home/tileone/one-project' 
exec $VENV_DIR/bin/gunicorn_django -w $NUM_WORKERS --bind=$BIND\ 
       --user=$USER --group=$GROUP --log-level=debug \ 
       --log-file=$LOGFILE 2>>$LOGFILE 

और मेरे अपाचे विन्यास चला रहा हूँ है प्राप्त कर रहा हूँ इस तरह:

Alias /static/ /hpath_to_static/static/ 
Alias /media/ /path_to_static/media/ 
Alias /favicon.ico /path_to/favicon.ico 

ProxyPreserveHost On 
<Location /> 
    SSLRequireSSL 
    ProxyPass http://127.0.0.1:9999/ 
    ProxyPassReverse http://127.0.0.1:9999/ 
    RequestHeader set SCRIPT_NAME /home/tileone/one-project/ 
    RequestHeader set X-FORWARDED-PROTOCOL ssl 
    RequestHeader set X-FORWARDED-SSL on 
</Location> 

मैं क्या गलत कर रहा हूं?

RequestHeader set SCRIPT_NAME /home/tileone/one-project/ 

और बजाय settings.py करने के बराबर जोड़ने:

FORCE_SCRIPT_NAME = '/one-project' 
इस के लिए

बेशक,

उत्तर

10

मामले में किसी को भी इसी तरह के मुद्दों, मैं इसे ठीक करने के बराबर हटाने के द्वारा सफल रही है अपाचे कॉन्फ़िगरेशन अधिक होना चाहिए:

ProxyPreserveHost On 
<Location /one-project/> 
    SSLRequireSSL 
    ProxyPass http://127.0.0.1:9999/ 
    ProxyPassReverse http://127.0.0.1:9999/ 
    RequestHeader set X-FORWARDED-PROTOCOL ssl 
    RequestHeader set X-FORWARDED-SSL on 
</Location> 
संबंधित मुद्दे