У меня есть работающее приложение Django, размещенное на моем линоде (Fedora 15), и я также пытаюсь разместить там сайт на основе php. Я использую виртуальные хосты на основе имен для перенаправления запросов на основе имени хоста, но по какой-то причине каждый запрос направляется в приложение Django. Я думаю, что, возможно, mod_wsgi отменяет некоторые значения по умолчанию? Или, может быть, синтаксическая ошибка моих виртуальных хостов (я пробовал DocumentRoot с кавычками и без)? Вот соответствующие части моего файла конфигурации httpd:
Name VirtualHost *:80
<VirtualHost *:80>
ServerName pollvaultr.com
ServerAlias www.pollvaultr.com
WSGIDaemonProcess pollvaultr.com user=apache group=apache
WSGIProcessGroup pollvaultr.com
WSGIScriptAlias / "/var/www/html/PollVaultr/wsgi.py"
Alias /static/ "/var/www/html/static/"
<Directory "/var/www/html/static">
Order allow,deny
Allow from all
</Directory>
<Directory "/var/www/html/PollVaultr">
<Files "wsgi.py">
Order allow,deny
Allow from all
</Files>
</Directory>
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "/var/www/catfacts/"
ServerName lexiross.com
ServerAlias www.lexiross.com
</VirtualHost>
А вот мой сценарий wsgi.py:
import os, sys
sys.path.append('/var/www/html')
sys.path.append('/var/www/html/PollVaultr')
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PollVaultr.settings")
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Бег httpd -e DEBUG
багов не обнаруживает. Вот конец моего файла error_log:
[Fri Feb 24 20:36:42 2012] [info] mod_wsgi (pid=5893): Create interpreter 'lexiross.com|'.
[Fri Feb 24 20:36:42 2012] [info] mod_wsgi (pid=5893): Adding '/var/www/html/' to path.
[Fri Feb 24 20:36:42 2012] [info] [client 140.247.248.217] mod_wsgi (pid=5893, process='', application='lexiross.com|'): Loading WSGI script '/var/www/html/PollVaultr/wsgi.py'.
Есть идеи, что может происходить? mod_wsgi определенно не должен обрабатывать запросы к lexiross.com - почему эти запросы не направляются в альтернативный корень документа? Я также должен упомянуть, что я впервые выполняю работу системного администратора, так что я новичок в этом! Спасибо.
Если вы не настроили второй виртуальный хост должным образом или его не нашли, Apache вернется к отправке запросов первому виртуальному хосту, который он нашел в конфигурации.
Виртуальные хосты находятся в одном файле, в разных файлах? Если в других файлах и в каталоге, доступном для сайтов, действительно ли вы включили второй сайт, связанный с включенными сайтами?
Попробуйте добавить синтаксическую ошибку во второй виртуальный хост, чтобы убедиться, что файл читается.
Также исправьте вашу директиву «NameVirtualHost» в примере, если это не ваша проблема. В нем не должно быть места.