2011-08-24 34 views
8

Tôi có thể xem tất cả mọi thứ trên wiki của họ - và sau đó tôi bị mất. http://wiki.dreamhost.com/DjangoTriển khai ứng dụng Django sử dụng hành khách

Tôi có mẫu Django trống và bất cứ khi nào tôi cố gắng thay đổi bất kỳ điều gì, tôi nhận được lỗi máy chủ nội bộ 500.

Tôi đã phát triển hoàn toàn ứng dụng django của mình tại địa phương và chỉ muốn lưu trữ trực tuyến - tìm ra nó sẽ dễ dàng nhưng tôi đang dần dần biết rằng không phải vậy.

Tôi tải ứng dụng "video" lên thư mục này rồi đặt nó vào ứng dụng đã cài đặt và chạy "python manage.py syncdb", không tìm thấy đồ đạc nào (mà tôi thấy lạ).

Từ đó, nó chỉ nhận được lỗi máy chủ nội bộ.

Đây là lỗi Tôi nhận: http://tweettune.com/ và đây là nhật ký lỗi:

[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 

Tôi đã cố gắng trong vòng 6 giờ bây giờ và không thể tìm ra những gì tôi đang làm sai. Tôi cho rằng tôi không hiểu cách triển khai ứng dụng - quy trình suy nghĩ của tôi giờ đây là ứng dụng được lưu trữ cục bộ của tôi và thay thế tất cả các tệp trong mẫu django mặc định trực tuyến. Tôi không thấy lý do tại sao điều này không nên làm việc nhưng nó không phải. Tôi đã thử ví dụ "hello world app" bằng cách sử dụng mã này trong tệp passenger_wdgi của tôi và nó hoạt động ...

Mọi hướng sẽ hữu ích.

EDIT: Đây là nội dung của tập tin passenger_wsgi.py có thể hữu ích (mặc dù nó được tạo tự động bởi dreamhost ... vì vậy hãy tìm nó là chính xác).

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

bày những tập tin cấu hình của bạn. –

+0

Xin lỗi, tôi không chắc chắn những gì bạn có ý nghĩa bởi các tập tin cấu hình của tôi? Nội dung passenger_wsgi.py? Hãy tha thứ cho sự thiếu hiểu biết của tôi về chủ đề này - lần đầu tiên cố gắng triển khai một dự án. – brandonmat

+0

Tôi nghĩ rằng bạn đã có con đường của bạn sai. Điều hướng đến thư mục dự án của bạn trong trình bao và sử dụng 'pwd' để in tên đầy đủ của thư mục đó. – Marcin

Trả lời

1

Thật khó để biết chính xác những gì bạn đang làm sai mà không thấy thiết lập của bạn. Tôi làm theo hướng dẫn, và nó không phải là khó.

Một điều bạn có thể làm để gỡ lỗi ứng dụng của mình là chạy qua manage.py. Nó sẽ không thể liên kết với một ổ cắm (và nếu có, nó sẽ được tự động phát sau một vài phút), nhưng điều đó ít nhất sẽ hiển thị nếu có các vấn đề khác ngăn ứng dụng của bạn chạy.

Một điều khác cần lưu ý: tệp được gọi là passenger_wsgi.py và phải nằm trong thư mục gốc của trang web của bạn. Ví dụ: tôi có ~/testing.tustincommercial.com/passenger_wsgi.py và tất cả mã dự án của tôi đều dưới ~/testing.tustincommercial.com/oneclickcos. Nội dung tĩnh của tôi tồn tại dưới ~/testing.tustincommercial.com/public.

Có thể giúp cài đặt một số phần mềm trung gian xử lý lỗi, do đó các lỗi không lan truyền tất cả các cách cho hành khách, do đó kích hoạt lỗi 500.

My wsgi_passenger.py là:

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) 

này thực hiện một loạt các công cụ, phần lớn trong số đó không phải là thực sự cần thiết - tất cả những thứ ở phía trên là để đảm bảo rằng các thư viện Tôi đã cài đặt là có sẵn. Các công cụ ở phần dưới cùng cài đặt phần mềm trung gian. Bạn có thể tốt hơn off với paste.exceptions.errormiddleware.ErrorMiddleware, trừ khi trình gỡ lỗi werkzeug làm việc cho bạn (nó sẽ không làm việc cho tôi trên Dreamhost).

Chỉnh sửa: Tôi nghĩ cấu hình của bạn sai.Vui lòng chuyển thư mục chứa dự án của bạn và sử dụng pwd để nhận đường dẫn đầy đủ. Tôi nghĩ rằng bạn sẽ tìm thấy bạn đã không có con đường của bạn đúng.

+0

Tôi cho rằng tôi có một câu hỏi sau đó. Tôi sẽ mong đợi để xem lỗi gỡ lỗi django bình thường nếu có một vấn đề với thiết lập của tôi hoặc nó sẽ chỉ quay trở lại một lỗi máy chủ 500? – brandonmat

+0

Lỗi 500 có thể do các ngoại lệ từ mã của bạn lan truyền tất cả các cách lên đầu hoặc do sự cố với cấu hình của bạn. Điểm cài đặt phần mềm trung gian là bắt và hiển thị các ngoại lệ sắp ra khỏi mã của bạn. Vì vậy, cấu hình xấu sẽ gây ra lỗi 500, nhưng nó không phải là nguồn duy nhất có thể. – Marcin

+0

Phản hồi PWD - /home/brandonmattalo/tweettune.com và dự án django của tôi là /home/brandonmattalo/tweettune.com/sotd – brandonmat

7

Tôi gặp sự cố tương tự. Giải pháp là để thêm các thư mục của ứng dụng của tôi trong 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() 

Liên kết này là rất hữu ích với tôi: http://discussion.dreamhost.com/thread-128918.html

0

tôi đã có vấn đề chính xác như vậy. Câu trả lời ở đây đưa tôi đi đúng hướng, cảm ơn. Tôi sử dụng virtualenv với ứng dụng django của tôi và os.getcwd() đã làm nó cho tôi.

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

Nếu sử dụng django> 1,7 thay thế hai dòng cuối cùng với

from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 
Các vấn đề liên quan