bra*_*mat 8 django passenger dreamhost
我可以浏览他们维基上的所有内容 - 然后我迷失了.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
Run Code Online (Sandbox Code Playgroud)
我现在已经尝试了6个小时,无法弄清楚我做错了什么.我想我根本不了解如何部署应用程序 - 我现在的思考过程是采用我本地托管的应用程序并在线替换默认django模板中的所有文件.我不明白为什么这不起作用,但事实并非如此.我通过在passenger_wdgi文件中使用此代码尝试了"hello world app"示例,它的工作原理...
def application(environ, start_response):
start_response('200 OK', [('Content-type', 'text/plain')])
return ["Hello, world!"]
Run Code Online (Sandbox Code Playgroud)
任何方向都会有所帮助.
编辑:这是我的passenger_wsgi.py文件的内容可能会有所帮助(虽然它是由dreamhost自动生成的...所以认为这是正确的).
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)
Run Code Online (Sandbox Code Playgroud)
小智 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()
Run Code Online (Sandbox Code Playgroud)
这个链接对我非常有用:http: //discussion.dreamhost.com/thread-128918.html
如果使用django> 1.7替换最后两行
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)
如果不查看您的设置,就很难准确地知道您做错了什么。我按照说明进行操作,这并不难。
调试应用程序可以做的一件事是运行manage.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)
Run Code Online (Sandbox Code Playgroud)
这做了很多事情,其中大部分并不是绝对必要的 - 顶部的所有内容都是为了确保我安装的库可用。底部的东西安装中间件。你可能最好使用paste.exceptions.errormiddleware.ErrorMiddleware,除非 werkzeug 调试器适合你(它在 Dreamhost 上对我不起作用)。
编辑:我认为你的配置是错误的。请转到包含您的项目的目录,并使用它pwd来获取完整路径。我想你会发现你的路没有走对。
| 归档时间: |
|
| 查看次数: |
4037 次 |
| 最近记录: |