Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:Dreamhost上乘客出现500内部服务器错误_Django_Passenger_Wsgi_Dreamhost - Fatal编程技术网

Django:Dreamhost上乘客出现500内部服务器错误

Django:Dreamhost上乘客出现500内部服务器错误,django,passenger,wsgi,dreamhost,Django,Passenger,Wsgi,Dreamhost,我这里有个小问题。我正在dreamhost(共享主机)上的django中构建一个项目。当我处于调试模式和使用内置服务器时,一切都正常,但当我尝试切换到prod时,会出现500个内部服务器错误。我在互联网上的每个黑暗房间里寻找解决方案,但仍然没有找到 下面是我的设置: 我的文件夹: /home/user/.virtualenvs/myenv/ /home/user/project/ /home/user/project/sqlite.db /home/user/project/project/se

我这里有个小问题。我正在dreamhost(共享主机)上的django中构建一个项目。当我处于调试模式和使用内置服务器时,一切都正常,但当我尝试切换到prod时,会出现500个内部服务器错误。我在互联网上的每个黑暗房间里寻找解决方案,但仍然没有找到

下面是我的设置:

我的文件夹:

/home/user/.virtualenvs/myenv/
/home/user/project/
/home/user/project/sqlite.db
/home/user/project/project/settings.py
/home/user/example.com/project (a symlink to /home/user/project)
/home/user/example.com/passenger_wsgi.py
/home/user/example.com/public/
import sys, os

INTERP = "/home/user/.virtualenvs/myenv/bin/python"
if sys.executable != INTERP:
    os.execl(INTERP, INTERP, *sys.argv)

sys.path.append('/home/user/.virtualenvs/myenv/lib/python3.3/site-packages')
sys.path.append('/home/user/example.com')
sys.path.append('/home/user/example.com/project')

os.environ['DJANGO_SETTINGS_MODULE'] = "project.settings"
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
我的乘客\u wsgi.py:

/home/user/.virtualenvs/myenv/
/home/user/project/
/home/user/project/sqlite.db
/home/user/project/project/settings.py
/home/user/example.com/project (a symlink to /home/user/project)
/home/user/example.com/passenger_wsgi.py
/home/user/example.com/public/
import sys, os

INTERP = "/home/user/.virtualenvs/myenv/bin/python"
if sys.executable != INTERP:
    os.execl(INTERP, INTERP, *sys.argv)

sys.path.append('/home/user/.virtualenvs/myenv/lib/python3.3/site-packages')
sys.path.append('/home/user/example.com')
sys.path.append('/home/user/example.com/project')

os.environ['DJANGO_SETTINGS_MODULE'] = "project.settings"
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
有人知道如何解决这个问题吗

编辑


我忘了提到,我安装了python 3和django 1.5,因为DH中的默认版本太旧了。

/home/user/example.com
目录中,您还需要向数据库文件添加符号链接

此外:

  • 您只需将
    /home/user/example.com/project
    附加到路径。另外两个是不必要的,尽管它们不应该引起问题
  • 您可以使用
    os.getcwd()
    ,而不是硬编码路径
    /home/user/example.com/project

对项目中的此文件或其他文件进行更改后,不要忘记执行
触摸tmp/restart.txt
通知乘客

顺便说一句,目前Django使用的是Python版本2.6.5到2.7,实验支持3.2和3.3。根据DreamHost上的报告,截至2012年2月,大多数服务器都应该使用Python 2.6.6,但某些服务器除外。使用
Python--version
检查您的Python版本,如果它不是2.6.6,那么您可以要求支持团队在您的服务器上升级它


我尝试在DreamHost上将Django与Python3.2或3.3结合使用,但存在问题。它不适用于3.2,因为Apache的
mod_wsgi
模块目前似乎不适用于此版本。如果您从源代码安装它,它可能会工作,但作为一个共享主机,我们无法控制它。我不确定,但如果
mod_wsgi
不适用于3.2,那么它也不适用于3.3。因此,如果你想在Dreamhost上使用Django,我认为最好还是坚持使用受支持的2.x版本。

你检查过服务器日志中抛出的实际错误吗?是的[Sat Apr 20 05:59:26 2013][error][client xxx.xxx.xxx.xxx]脚本头过早结束:internal_error.htmlHmm非常广泛,试过了吗?我无法控制这台机器,它是一个共享主机。例如,我无法访问Apache日志,甚至无法访问httpd.conf。那么,在这些常见问题中,我到底应该尝试些什么呢?谢谢,但它不太管用。也许我应该回到django 1.4aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,它成功了!我的服务器有Python2.6.6,所以我用它创建了一个新的virtualenv,移动了我的项目,将passenger中的INTERP路径更改为Python2.6.6,重新启动了DH,它终于工作了。非常感谢Janos,这真的帮助了我,因为我认为问题出在乘客方面,而且我从来没有想过要切换到另一个python版本。