2011-08-24 15 views
8

का उपयोग कर Django ऐप को तैनात करना मैं अपने विकी पर सब कुछ प्राप्त कर सकता हूं - और फिर मैं खो गया हूं। http://wiki.dreamhost.com/Djangoयात्री

मेरे पास एक खाली Django टेम्पलेट है, और जब भी मैं कुछ भी बदलने की कोशिश करता हूं तो मुझे 500 आंतरिक सर्वर त्रुटि मिलती है।

मैंने पूरी तरह से अपने django ऐप को स्थानीय रूप से विकसित किया है और बस इसे ऑनलाइन होस्ट करना चाहते हैं - यह अनुमान लगाया गया है कि यह आसान होगा लेकिन धीरे-धीरे सीख रहा है कि यह नहीं है।

मैं इस निर्देशिका में अपना ऐप "वीडियो" अपलोड करता हूं और फिर इसे इंस्टॉल किए गए ऐप्स में डालता हूं और "python manage.py syncdb" चलाता हूं, जिसमें कोई फिक्स्चर नहीं मिलता है (जो मुझे अजीब लगता है)।

वहां से, यह केवल एक आंतरिक सर्वर त्रुटि प्राप्त करता है।

यहाँ त्रुटि मैं हो रही है: http://tweettune.com/ और यहाँ त्रुटि लॉग है:

[Wed Aug 24 01:49:15 2011] [error] [client 66.212.30.122] Premature end of script headers: 
[Wed Aug 24 01:49:15 2011] [error] [client 66.212.30.122] Premature end of script headers: internal_error.html 
[Wed Aug 24 08:16:40 2011] [error] [client 99.229.160.94] Premature end of script headers: 
[Wed Aug 24 08:16:41 2011] [error] [client 99.229.160.94] Premature end of script headers: internal_error.html 
[Wed Aug 24 08:21:38 2011] [error] [client 99.229.160.94] Premature end of script headers: 
[Wed Aug 24 08:21:38 2011] [error] [client 99.229.160.94] Premature end of script headers: internal_error.html 
[Wed Aug 24 08:27:41 2011] [error] [client 99.229.160.94] Premature end of script headers: 
[Wed Aug 24 08:27:41 2011] [error] [client 99.229.160.94] Premature end of script headers: internal_error.html 

मैं 6 घंटे के लिए अब कोशिश कर रहा था और समझ नहीं मैं गलत क्या कर रहा हूँ। मुझे लगता है कि मैं समझ नहीं पा रहा हूं कि एप्लिकेशन को कैसे तैनात करना है - मेरी विचार प्रक्रिया अब मेरी स्थानीय रूप से होस्ट की गई ऐप लेती है और डिफ़ॉल्ट रूप से डिफ़ॉल्ट django टेम्पलेट में सभी फ़ाइलों को प्रतिस्थापित करती है। मुझे नहीं लगता कि यह क्यों काम नहीं करना चाहिए लेकिन यह नहीं है। मैं अपने passenger_wdgi फ़ाइल में इस कोड का उपयोग करके "हैलो दुनिया एप्लिकेशन" उदाहरण की कोशिश की और यह काम करता है ...

def application(environ, start_response): 
    start_response('200 OK', [('Content-type', 'text/plain')]) 
    return ["Hello, world!"] 

किसी भी दिशा उपयोगी होगा।

संपादित करें: यहां मेरी यात्री_wsgi.py फ़ाइल की सामग्री दी गई है जो सहायक हो सकती है (हालांकि यह स्वचालित रूप से सपनेहॉस्ट द्वारा उत्पन्न होती है ... इसलिए यह सही होगा)।

import sys, os 
sys.path.append(os.getcwd()) 
os.environ['DJANGO_SETTINGS_MODULE'] = "sotd.settings" 
import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 
project_path='/home/tweettune.com/sotd/' 
sys.path.insert(1, project_path) 
+0

के साथ दो अंतिम पंक्ति की जगह अपने config फाइल को दिखाएं। –

+0

क्षमा करें, मुझे यकीन नहीं है कि मेरी कॉन्फ़िगरेशन फ़ाइलों का क्या मतलब है? Passenger_wsgi.py सामग्री? कृपया इस विषय पर मेरी अज्ञानता से बहाना - पहली बार एक परियोजना को तैनात करने की कोशिश कर रहा है। – brandonmat

+0

मुझे लगता है कि आपको अपने पथ गलत हैं। खोल में अपनी प्रोजेक्ट निर्देशिका पर नेविगेट करें, और उस निर्देशिका के पूर्ण नाम को मुद्रित करने के लिए 'pwd' का उपयोग करें। – Marcin

उत्तर

1

यह जानना मुश्किल है कि आप अपना सेटअप देखे बिना क्या कर रहे हैं। मैंने निर्देशों का पालन किया, और यह मुश्किल नहीं था।

एक ऐसा काम जो आप अपने आवेदन को डीबग करने के लिए कर सकते हैं प्रबंधन.py के माध्यम से चलाने के लिए है। यह किसी सॉकेट से जुड़ने में सक्षम नहीं होगा (और यदि ऐसा होता है, तो यह कुछ मिनटों के बाद ऑटोकॉल्ड हो जाएगा), लेकिन कम से कम यह दिखाएगा कि क्या अन्य समस्याएं हैं जो आपके ऐप को चलने से रोकती हैं।

एक अन्य बात ध्यान दें: फ़ाइल को passenger_wsgi.py कहा जाता है, और आपकी साइट रूट में रहना चाहिए। उदाहरण के लिए, मेरे पास ~/testing.tustincommercial.com/passenger_wsgi.py है, और मेरा सभी प्रोजेक्ट कोड ~/testing.tustincommercial.com/oneclickcos के अंतर्गत रहता है। मेरी स्थिर सामग्री ~/testing.tustincommercial.com/public के अंतर्गत रहती है।

यह कुछ त्रुटि-हैंडलिंग मिडलवेयर स्थापित करने में मदद कर सकता है, ताकि त्रुटियों यात्री को सभी तरह से प्रचार न करें, इस प्रकार 500 त्रुटि को ट्रिगर कर दें।

मेरे wsgi_passenger.py है:

import sys, os, re 
cwd = os.getcwd() 
sys.path.append(os.getcwd()) 

#add all installed eggs to path 
for x in ['/home/marcintustin/django/'+x for x in os.listdir('/home/marcintustin/django/') if re.search('egg$', x)]: 
    sys.path.insert(0,x) 

sys.path.insert(0,'/home/marcintustin/django') 
sys.path.insert(0,'/home/marcintustin/django/Django-1.3') 
sys.path.insert(0,'/home/marcintustin/django/Paste-1.7.5.1-py2.5.egg') 
sys.path.insert(0,'/home/marcintustin/django/South-0.7.3-py2.5.egg') 
sys.path.insert(0,'/home/marcintustin/django/Werkzeug-0.6.2-py2.5.egg') 

myapp_directory = cwd + '/oneclickcos' 
sys.stdout = sys.stderr 
sys.path.insert(0,myapp_directory) 
sys.path.append(os.getcwd()) 

os.environ['DJANGO_SETTINGS_MODULE'] = "oneclickcos.settings" 
import django.core.handlers.wsgi 
#from paste.exceptions.errormiddleware import ErrorMiddleware 
from werkzeug.debug import DebuggedApplication 
from django.core.servers.basehttp import run, AdminMediaHandler, WSGIServerException 

application = django.core.handlers.wsgi.WSGIHandler() 
handler = AdminMediaHandler(application, '/home/marcintustin/testing.tustincommercial.com/public/static/admin') 
application = DebuggedApplication(handler, evalex=True) 

इस सामान का एक समूह, जिनमें से अधिकांश सख्ती से आवश्यक नहीं है करता है - शीर्ष पर सामान के सभी सुनिश्चित करें कि पुस्तकालयों मैं स्थापित किया है कर रहे हैं बनाने के लिए है उपलब्ध। नीचे की सामग्री मिडलवेयर स्थापित करता है। आप शायद paste.exceptions.errormiddleware.ErrorMiddleware के साथ बेहतर हो जाएं, जब तक कि werkzeug डीबगर आपके लिए काम नहीं करता है (यह मेरे लिए ड्रीमहोस्ट पर काम नहीं करेगा)।

संपादित करें: मुझे लगता है कि आपकी कॉन्फ़िगरेशन गलत है।कृपया अपनी परियोजना रखने वाली निर्देशिका पर जाएं, और पूर्ण पथ प्राप्त करने के लिए pwd का उपयोग करें। मुझे लगता है कि आप पाएंगे कि आपको अपने पथ सही नहीं हैं।

+0

मुझे लगता है कि मेरे पास एक सवाल है। अगर मैं अपने सेटअप के साथ कोई समस्या थी या क्या यह 500 सर्वर त्रुटि को वापस कर देगा तो क्या मैं सामान्य django डीबग त्रुटियों को देखने की उम्मीद करूंगा? – brandonmat

+0

एक 500 त्रुटि या तो आपके कोड से अपवादों को शीर्ष पर सभी तरह से प्रचारित करने या आपके कॉन्फ़िगरेशन के साथ किसी समस्या के कारण हो सकती है। मिडलवेयर स्थापित करने का बिंदु अपने कोड से बाहर आने वाले अपवादों को पकड़ना और प्रदर्शित करना है। इसलिए, खराब कॉन्फ़िगरेशन 500 त्रुटि का कारण बनता है, लेकिन यह एकमात्र संभावित स्रोत नहीं है। – Marcin

+0

पीडब्ल्यूडी प्रतिक्रिया - /home/brandonmattalo/tweettune.com और मेरा डीजेंगो प्रोजेक्ट स्वयं /home/brandonmattalo/tweettune.com/sotd – brandonmat

7

मुझे एक ही समस्या थी। समाधान wsgi_passenger.py

import sys, os 
sys.path.append(os.getcwd()) 
sys.path.append(os.path.join(os.getcwd(), 'include your apps folder here')) 
os.environ['DJANGO_SETTINGS_MODULE'] = "cpc.settings" 
import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

यह लिंक मेरे लिए बहुत उपयोगी था में अपने आवेदन की फ़ोल्डर जोड़ने के लिए किया गया था: http://discussion.dreamhost.com/thread-128918.html

0

मैं ठीक उसी समस्या थी। यहां दिए गए उत्तरों ने मुझे सही दिशा में रखा, धन्यवाद। मैं अपने django ऐप के साथ वर्चुअलएन्व का उपयोग करता हूं और os.getcwd() ने मेरे लिए यह किया।

import os, sys 

#Fix for passenger 
INTERP = "/var/webapps/myapp_env/bin/python" 
if sys.executable != INTERP: os.execl(INTERP, INTERP, *sys.argv) 
sys.path.append(os.getcwd()) 
# 

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings") 
from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 
7

तो Django का उपयोग कर> 1,7

from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 
संबंधित मुद्दे