Apache-2.2

mod_wsgi 覆蓋 Apache 上的虛擬主機?

  • September 1, 2019

我在我的 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”指令,除非這是您的問題。裡面不應該有空格。

引用自:https://serverfault.com/questions/363639