Настройка django с помощью WSGI и apache
Вопрос
Я был продан на mod_wsgi и apache, а не на mod_python.У меня установлены все компоненты (django, apache, mod_wsgi), но я столкнулся с проблемой развертывания.
Я работаю на osx 10.5 с apache 2.2 и django 1.0b2, mod_wsgi-2.3
Мое приложение называется tred.
Вот соответствующие файлы:httpd-vhosts (включен в httpd-conf)
NameVirtualHost tred:80 ServerName tred Alias /admin_media /usr/lib/python2.5/site-packages/django/contrib/admin/media Order allow,deny Allow from all Alias /media /Users/dmg/Sites/tred/media Order allow,deny Allow from all Alias / /Users/dmg/Sites/tred/ Order allow,deny Allow from all WSGIScriptAlias / /Users/dmg/Sites/tred/mod_wsgi-handler.wsgi WSGIDaemonProcess tred user=dmg group=staff processes=1 threads=10 WSGIProcessGroup tred
mod_wsgi-дескриптор.wsgi
import sys import os sys.path.append(os.path.dirname(os.path.abspath(__file__)) + '/..') os.environ['DJANGO_SETTINGS_MODULE'] = 'tred.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
Когда я иду в http://tred Я получаю список каталогов, а не отображаемый веб-сайт.Я думаю, что я правильно следовал инструкциям, но это явно неправильно.Что я могу сделать, чтобы это сработало?
Решение
Что произойдет, если вы удалите Alias /
Директива?
Другие советы
Обратите внимание, что директивы Alias и WSGIScriptAlias не имеют одинакового приоритета.Таким образом, они не будут обрабатываться в файловом порядке, как записано.Вместо этого все директивы Alias получают приоритет над директивами WSGIScriptAlias.Таким образом, не имело бы значения, если бы псевдоним для '/' появился после WSGIScriptAlias, он все равно имел бы приоритет.
Оно работает. Я понятия не имею, почему, но это так.
Для будущего ссылки:
Он работает, потому что Apache обрабатывает псевдоним по порядку и использует первый матч. Это всегда ударило Alias /
, что будет соответствовать чему -либо, до WSGIScriptAlias
.
Во -первых, все перенаправления обрабатываются до обработки псевдонимов, и поэтому запрос, который соответствует
Redirect
илиRedirectMatch
никогда не будет применять псевдонимы. Во -вторых, псевдонимы и перенаправления обрабатываются в том порядке, который они появляются в файлах конфигурации, причем первое матч имеет приоритет.
попробуйте следовать этому руководству - http://singlas.in/5-step-tutorial-for-using-django-with-apache-and-mod_wsgi/
вы пытаетесь разместить папку apache /var/www/ и приложение Django в корневом каталоге (/).Поскольку директива Alias имеет приоритет над WSGIScriptAlias, она отображает каталог apache.
вы можете попробовать разместить приложение django по адресу /app.В качестве альтернативы разместите папку /var/www/ в другом месте, например /public