用户登录时Django部署wsgi 500错误
Django deploy wsgi 500 error when user logging in
我使用 Django 1.8 和 apache 2.2。我安装了 mod_wsgi,除用户身份验证外一切正常。
我可以尝试使用错误的密码登录(它将检查并返回错误密码)只有当用户名和密码正确时,我才会收到 500 错误。
我尝试了以下 settings.py
import os
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'Map'
)
TEMPLATE_CONTEXT_PROCESSORS = TCP + (
'django.core.context_processors.request',
'django.core.context_processors.auth',
'django.core.context_processors.debug',
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages"
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
)
ROOT_URLCONF = 'MyApp.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'MyApp.wsgi.application'
在启用的 apache 站点中:
<VirtualHost *:80>
ServerName myapp.org
WSGIScriptAlias / /home/MyApp/wsgi.py
Alias /static/ /home/MyApp/static/
<Directory /home/MyApp/static>
Order allow,deny
Allow from all
</Directory>
<Directory /home/MyApp/>
<Files wsgi.py>
Order allow,deny
Allow from all
</Files>
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/MyApp.log combined
</VirtualHost>
错误只有发生在登录应该成功的时候。
我是否缺少任何设置?
最后看来apache对sqlite数据库没有写权限。我通过以下方式解决了这个问题:
chown www-data:www-data /srv/mysite
chown www-data:www-data /srv/mysite/DATABASE.sqlite
如 niekas.
的答案所示
我使用 Django 1.8 和 apache 2.2。我安装了 mod_wsgi,除用户身份验证外一切正常。 我可以尝试使用错误的密码登录(它将检查并返回错误密码)只有当用户名和密码正确时,我才会收到 500 错误。 我尝试了以下 settings.py
import os
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'Map'
)
TEMPLATE_CONTEXT_PROCESSORS = TCP + (
'django.core.context_processors.request',
'django.core.context_processors.auth',
'django.core.context_processors.debug',
"django.core.context_processors.i18n",
"django.core.context_processors.media",
"django.core.context_processors.static",
"django.core.context_processors.tz",
"django.contrib.messages.context_processors.messages"
)
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.security.SecurityMiddleware',
)
ROOT_URLCONF = 'MyApp.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'MyApp.wsgi.application'
在启用的 apache 站点中:
<VirtualHost *:80>
ServerName myapp.org
WSGIScriptAlias / /home/MyApp/wsgi.py
Alias /static/ /home/MyApp/static/
<Directory /home/MyApp/static>
Order allow,deny
Allow from all
</Directory>
<Directory /home/MyApp/>
<Files wsgi.py>
Order allow,deny
Allow from all
</Files>
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/MyApp.log combined
</VirtualHost>
错误只有发生在登录应该成功的时候。 我是否缺少任何设置?
最后看来apache对sqlite数据库没有写权限。我通过以下方式解决了这个问题:
chown www-data:www-data /srv/mysite
chown www-data:www-data /srv/mysite/DATABASE.sqlite
如 niekas.