Django为除root之外的每个视图提供500个错误

时间:2011-07-08 05:19:28

标签: django apache deployment dreamhost

所以我尝试部署到我的生产环境,除了根URL之外,每个视图都会出现500个错误:http://5buckchuck.com/

错误似乎是apache错误,而不是花哨的django错误:

  

内部服务器错误

     

服务器遇到内部问题   错误或错误配置,是   无法完成您的请求。

     

请与服务器联系   管理员,   webmaster@5buckchuck.com并告知   它们发生错误的时间,   以及你可能做过的任何事情   可能导致错误。

     

有关此错误的详细信息可能有效   在服务器错误日志中可用。

根据服务器错误日志:

  

[Thu Jul 07 22:04:53 2011] [错误]   [客户我的IP]请求超出了   由于的10个内部重定向的限制   可能的配置错误。使用   'LimitInternalRecursion'增加   必要时限制。使用'LogLevel   调试'以获得回溯。

的信息:

  • debugging设置为true
  • 我尝试过syncdb,一切都是最新的
  • 我已连接到数据库并且所有内容都很好看
  • urls.py似乎反映了开发中的所有网址

我不太确定去哪里。更好的伐木肯定有帮助。任何帮助将不胜感激。

按要求:

settings.py

DEBUG = True
TEMPLATE_DEBUG = DEBUG

TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
 #'django.template.loaders.eggs.Loader',
)

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)

AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)

ROOT_URLCONF = 'fivebuckchuck.urls'

TEMPLATE_DIRS = (
'/home/MyUserName/5buckchuck.com/fivebuckchuck/templates'

)

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',

#5BC Stuff
'winerater',

#all-auth apps,
'emailconfirmation',
'uni_form',
'allauth',
'allauth.account',
'allauth.socialaccount',
'allauth.twitter',
'allauth.openid',
)


TEMPLATE_CONTEXT_PROCESSORS = (
'allauth.context_processors.allauth',
'allauth.account.context_processors.account',
'django.core.context_processors.media',
'django.contrib.auth.context_processors.auth',
'django.core.context_processors.request',
)

urls.py

from django.conf.urls.defaults import *
from winerater.views import *
from settings import MEDIA_ROOT
from django.views.generic.simple import direct_to_template
from django.views.generic.simple import redirect_to

# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
# Example:
# (r'^mobile_5BC/', include('mobile_5BC.foo.urls')),

# Uncomment the admin/doc line below and add 'django.contrib.admindocs' 
# to INSTALLED_APPS to enable admin documentation:
(r'^admin/doc/', include('django.contrib.admindocs.urls')),

(r'^admin/', include(admin.site.urls)),
(r'^$', front_page),
(r'^user/(\w+)/$', user_page),
(r'^login/$', 'django.contrib.auth.views.login'),
(r'^login/success/$', direct_to_template,
{'template': 'front_page'}),    
#(r'^accounts/login/$', 'django.contrib.auth.views.login'),
 (r'^logout/$', logout_page),
  (r'^media/(?P<path>.*)$', 'django.views.static.serve',
   {'document_root': MEDIA_ROOT}),
  (r'^register/$', register_page),
  (r'^register/success/$', redirect_to,
   {'url': '/login/'}),
  (r'^save/$', wine_add_page),
  (r'detail/(\w+)/', wine_detail_page),
  (r'wine_image/(\w+)/$', wine_image),    
  (r'wines/([^\s]+)/$', wine_results),
  (r'review/(\w+)/$', wine_review_page),
  (r'^accounts/', include('allauth.urls')),
  (r'^accounts/profile/', front_page),
)

passenger_wsgi.py

import sys, os
INTERP = '/home/MyUserName/local/bin/python' # Is my actual username
if sys.executable != INTERP:
   os.execl(INTERP, INTERP, *sys.argv)
sys.path.append(os.getcwd())
sys.path.append(os.getcwd()+'/fivebuckchuck')
os.environ['DJANGO_SETTINGS_MODULE'] = "fivebuckchuck.settings"
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

3 个答案:

答案 0 :(得分:1)

问题最终是Dreamhost写了一个.htaccess文件,里面有PHP的项目,这颠覆了Django的URL读取方案。希望这可以帮助其他用户。

答案 1 :(得分:0)

您应该检查您的apache配置是否有不必要的重定向/重写/别名行。首先删除所有这些。

答案 2 :(得分:0)

这可能需要一些来回解决。我的初步猜测是您的 passenger_wsgi.py 文件存在问题。如果您没有在开发环境中使用Apache(例如使用Django的 runserver ),那么您将不会遇到此文件,因此在开发环境中不会出现问题。确保此行指向正确的Django设置文件。

os.environ['DJANGO_SETTINGS_MODULE'] = "fivebuckchuck.settings"

http://5buckchuck.com/media/给了我这个错误:

An error occurred importing your passenger_wsgi.py

(过去时,你已经改变了一些东西,现在这个URL现在给出了一个“Hello World!”Python消息。现在它是一个带有调试回溯的ImportError。嘿嘿,好的我会让这个答案停留片刻。)

这可能是一个远景,但请阅读this。这是James Bennett关于为Django设置和加载设置的方法。您可以尝试导入设置并将其提供给setup_environ()。

相关问题