【问题标题】:500 Internal Server Error with Django 1.6 on EC2, django.wsgiEC2 django.wsgi 上的 Django 1.6 出现 500 内部服务器错误
【发布时间】:2014-06-07 15:25:33
【问题描述】:

我刚刚在 EC2 服务器上安装(或尝试安装)Django 1.6,但我似乎遇到了 django.wsgi 的问题。

我已安装 Django 1.6、httpd 和 mod_wsgi,但我收到“服务器遇到内部错误或配置错误,无法完成您的请求。

请联系服务器管理员,root@localhost..."

我知道我在某处犯了错误,但我似乎无法弄清楚错误日志试图告诉我什么。我看到底部附近有一些数据库错误,我还没有进行任何设置,但上面的错误肯定来自不同的问题吗?

这是错误日志中的最新信息:

[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82] mod_wsgi (pid=1973): Exception occurred processing WSGI script '/home/ec2-user/Django-1.6/joshsite/apache/django.wsgi'.
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82] Traceback (most recent call last):
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 187, in __call__
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]     self.load_middleware()
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 47, in load_middleware
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]     mw_class = import_by_path(middleware_path)
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/utils/module_loading.py", line 21, in import_by_path
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]     module = import_module(module_path)
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/utils/importlib.py", line 40, in import_module
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]     __import__(name)
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/contrib/auth/middleware.py", line 3, in <module>
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]     from django.contrib.auth.backends import RemoteUserBackend
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/contrib/auth/backends.py", line 3, in <module>
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]     from django.contrib.auth.models import Permission
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/contrib/auth/models.py", line 48, in <module>
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]     class Permission(models.Model):
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 96, in __new__
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]     new_class.add_to_class('_meta', Options(meta, **kwargs))
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 264, in add_to_class
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]     value.contribute_to_class(cls, name)
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/db/models/options.py", line 124, in contribute_to_class
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]     self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/db/__init__.py", line 34, in __getattr__
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]     return getattr(connections[DEFAULT_DB_ALIAS], item)
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/db/utils.py", line 198, in __getitem__
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]     backend = load_backend(db['ENGINE'])
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/db/utils.py", line 131, in load_backend
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]     raise ImproperlyConfigured(error_msg)
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82] ImproperlyConfigured: 'mysql' isn't an available database backend.
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82] Try using 'django.db.backends.XXX', where XXX is one of:
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82]     u'mysql', u'oracle', u'postgresql_psycopg2', u'sqlite3'
[Wed Apr 23 02:39:00 2014] [error] [client 75.75.80.82] Error was: No module named mysql.base
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82] mod_wsgi (pid=1976): Exception occurred processing WSGI script '/home/ec2-user/Django-1.6/joshsite/apache/django.wsgi'.
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82] Traceback (most recent call last):
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/core/handlers/wsgi.py", line 187, in __call__
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]     self.load_middleware()
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 47, in load_middleware
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]     mw_class = import_by_path(middleware_path)
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/utils/module_loading.py", line 21, in import_by_path
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]     module = import_module(module_path)
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/utils/importlib.py", line 40, in import_module
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]     __import__(name)
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/contrib/auth/middleware.py", line 3, in <module>
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]     from django.contrib.auth.backends import RemoteUserBackend
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/contrib/auth/backends.py", line 3, in <module>
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]     from django.contrib.auth.models import Permission
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/contrib/auth/models.py", line 48, in <module>
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]     class Permission(models.Model):
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 96, in __new__
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]     new_class.add_to_class('_meta', Options(meta, **kwargs))
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/db/models/base.py", line 264, in add_to_class
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]     value.contribute_to_class(cls, name)
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/db/models/options.py", line 124, in contribute_to_class
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]     self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/db/__init__.py", line 34, in __getattr__
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]     return getattr(connections[DEFAULT_DB_ALIAS], item)
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/db/utils.py", line 198, in __getitem__
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]     backend = load_backend(db['ENGINE'])
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]   File "/usr/lib/python2.6/site-packages/django/db/utils.py", line 131, in load_backend
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]     raise ImproperlyConfigured(error_msg)
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82] ImproperlyConfigured: 'mysql' isn't an available database backend.
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82] Try using 'django.db.backends.XXX', where XXX is one of:
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82]     u'mysql', u'oracle', u'postgresql_psycopg2', u'sqlite3'
[Wed Apr 23 02:39:03 2014] [error] [client 75.75.80.82] Error was: No module named mysql.base

我的django.wsgi如下:

import os,sys

apache_configuration = os.path.dirname(__file__)
project = os.path.dirname(apache_configuration)
workspace = os.path.dirname(project)
sys.path.append(workspace)
sys.path.append('/home/ec2-user/Django-1.6/joshsite/joshsite')
sys.path.append('/home/ec2-user/Django-1.6/joshsite')

os.environ['DJANGO_SETTINGS_MODULE'] = 'joshsite.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

我已将其添加到 httpd.conf 中

<VirtualHost *:80>
    DocumentRoot /home/ec2-user/Django-1.6/joshsite
    ServerName ec2-54-187-46-240.us-west-2.compute.amazonaws.com
    ErrorLog /home/ec2-user/Django-1.6/joshsite/logs/apache_error.log
    CustomLog /home/ec2-user/Django-1.6/joshsite/logs/apache_access.log combined
    WSGIScriptAlias / /home/ec2-user/Django-1.6/apache/django.wsgi


    <Directory /home/ec2-user/Django-1.6/joshsite/media>
        Order deny,allow
        Allow from all
    </Directory>

    <Directory /home/ec2-user/Django-1.6/apache>
        Order deny,allow
        Allow from all
    </Directory>

    LogLevel warn

    Alias /media/ /ec2-user/Django-1.6/joshsite/media/
</VirtualHost>

这里是settings.py的内容:

"""
Django settings for joshsite project.

For more information on this file, see
https://docs.djangoproject.com/en/1.6/topics/settings/

For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.6/ref/settings/
"""

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = ***

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

TEMPLATE_DEBUG = True

ALLOWED_HOSTS = []


# Application definition

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

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

ROOT_URLCONF = 'joshsite.urls'

WSGI_APPLICATION = 'joshsite.wsgi.application'


# Database
# https://docs.djangoproject.com/en/1.6/ref/settings/#databases

DATABASES = {
    'default': {
       'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
        'USER': '**',
        'PASSWORD': '**',
        'HOST': '',
        'PORT': '',
    }
}

# Internationalization
# https://docs.djangoproject.com/en/1.6/topics/i18n/

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'UTC'

USE_I18N = True

USE_L10N = True

USE_TZ = True


# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/

STATIC_URL = '/static/'

这是我的 urls.py:

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'joshsite.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
    url(r'^home/', 'joshsite.views.home', name='home'),
)

更新: 有时在 / 处,我会收到 404 错误:

Request Method: GET
Request URL:    http://ec2-54-187-46-240.us-west-2.compute.amazonaws.com/
Using the URLconf defined in joshsite.urls, Django tried these URL patterns, in this order:
^admin/
^home/ [name='home']
The current URL, , didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
Thank you in advance for any assistance.

但刷新后有时会回到 500,几乎就像是随机选择的一样。

【问题讨论】:

    标签: python django apache amazon-web-services amazon-ec2


    【解决方案1】:

    settings.py 中检查您的DATABASE 设置。看起来你的 ENGINE 很糟糕。尝试更改为:

    'ENGINE': 'django.db.backends.mysql',
    

    如果这不起作用,请发布您的数据库设置。

    【讨论】:

    • 很好,我重新加载了页面(在 / 处),它更改为 404,它说使用 joshsite.urls 中定义的 URLconf,Django 尝试了这些 URL 模式......不匹配任何这些,并且该调试设置为true。 /home 仍将我带到 500。我将使用设置添加新回复/编辑我的帖子。
    • 好的,现在不是设置问题,而是新问题。我会关闭这个并从你的新问题开始一个新问题。在其中包含您访问的网址、您的 urls.py 文件以及有关您收到的错误消息的更多详细信息。
    • 谢谢,非常感谢。
    • 无论我将 debug 设置为 false 之后,它现在都只是一个 500 错误,所以我认为最好重新解决这个问题。
    • 您的新错误看起来与您的旧错误相同。您是否错误地回滚了数据库更改?或者粘贴了错误的新错误消息。
    猜你喜欢
    • 2019-07-19
    • 2011-06-26
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 2011-05-05
    • 2013-04-13
    • 2015-03-05
    • 2015-02-12
    相关资源
    最近更新 更多