Apache-2.2
mod_wsgi 覆蓋 Apache 上的虛擬主機?
我在我的 linode (Fedora 15) 上託管了一個可以工作的 Django 應用程序,並且我也在嘗試在那里托管一個基於 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”指令,除非這是您的問題。裡面不應該有空格。