Почему моя установка Django выдает пустой HTTP-ответ? - PullRequest
2 голосов
/ 31 июля 2010

Окончательное обновление: Был случайный LoadModule python_module modules/mod_python.so, который конфликтовал с mod_wsgi. После удаления этого LoadModule все снова заработало.


Я настраиваю производственный сервер с Django и следую наряду с учебником по Django , но получаю пустую страницу (или, как нравится Chrome, Error 324 (net::ERR_EMPTY_RESPONSE): Unknown error.), когда я посещаю http://domain.com/mysite .

# httpd.conf

LoadModule wsgi_module modules/mod_wsgi.so
WSGIScriptAlias /mysite /home/gibson/mysite/django.wsgi

# django.wsgi

import os
import sys

sys.path.append('/home/gibson')

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

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

Я также пытался использовать очень простое тестовое приложение mod_wsgi (как в mod_wsgi wiki ), которое ведет себя как ожидалось:

# django.wsgi (test)

def application(environ, start_response):
    status = '200 OK'
    output = 'i live!'
    response_headers = [('Content-type', 'text/plain'),
                        ('Content-Length', str(len(output)))]
    start_response(status, response_headers)
    return [output]

Есть что-то еще, что я мог бы забыть? Я ценю понимание.

небольшое обновление: Для хихиканья я проверил свой Apache error_log:

[notice] child pid 18356 exit signal Segmentation fault (11)

Поиск в этом драгоценном камне вернул некоторые сведения о механизме кэширования Django (который я не использую) и конфликтует с загрузкой модуля mod_python (который я прокомментировал в своем httpd.conf).

Обновление 2: (комментарии для краткости удалены)

# settings.py

DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
)
MANAGERS = ADMINS
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', 
        'NAME': '/home/gibson/mysite/sqlite3.db',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    }
}
TIME_ZONE = 'America/Chicago'
LANGUAGE_CODE = 'en-us'
SITE_ID = 1
USE_I18N = True
USE_L10N = True
MEDIA_ROOT = ''
MEDIA_URL = ''
ADMIN_MEDIA_PREFIX = '/media/'
SECRET_KEY = '[redacted]'
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.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',
)
ROOT_URLCONF = 'mysite.urls'
TEMPLATE_DIRS = (
)

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


# urls.py

from django.conf.urls.defaults import *
urlpatterns = patterns('',)

1 Ответ

2 голосов
/ 07 февраля 2011

Убедитесь, что в Apache не установлены конфликтующие модули.В частности, проверьте наличие mod_python или аналогичного.

...