我使用virtualenv创建了两个Django项目,并使用wsgi和Ubuntu 18.04上的两个虚拟主机使用Apache2为这两个项目提供服务。如果我将两个虚拟主机都配置在一个.conf文件中,则项目可以正常工作,但是如果我将一个.conf文件拆分为两个文件,则每个虚拟主机都配置一个,那么只有第一个主机(按字母顺序)起作用,对于第二个主机,Apache会尝试在第一个Django项目的文件夹中查找文件。
我正在使用带有Python 3.6的Ubuntu 18.04和带有Apache 2.4.29的Django 2.2.2。这个问题是由不同的人在博客上共享的,我尝试了这些解决方案,但似乎没有任何效果。
以下单个配置文件运行正常:
<VirtualHost *:80>
ServerName virenvtst.tst
ServerAdmin webmaster@virenvtst.tst
DocumentRoot /var/www/html
Alias /static /home/raza/projects/virenvtest/static
<Directory /home/raza/projects/virenvtest/static>
Require all granted
</Directory>
<Directory /home/raza/projects/virenvtest/myproject>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess myproject python-home=/home/raza/projects/virenvtest/virenvtestenv python-path=/home/raza/projects/virenvtest
WSGIProcessGroup myproject
WSGIScriptAlias / /home/raza/projects/virenvtest/myproject/wsgi.py
<Location />
WSGIProcessGroup myproject
</Location>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName djsample.tst
ServerAdmin webmaster@djsample.tst
DocumentRoot /var/www/html
Alias /static /home/raza/projects/djsample/static
<Directory /home/raza/projects/djsample/static>
Require all granted
</Directory>
<Directory /home/raza/projects/djsample/mysite>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
WSGIDaemonProcess mysite python-home=/home/raza/projects/djsample/djsampleenv python-path=/home/raza/projects/djsample
WSGIProcessGroup mysite
WSGIScriptAlias / /home/raza/projects/djsample/mysite/wsgi.py
<Location />
WSGIProcessGroup mysite
</Location>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
当我将此代码分成两个单独的文件时,则djsample.tst优先,当我尝试运行virenvtest.tst时,出现错误消息,Apaches尝试在djsample项目中查找文件。我得到以下回应,而不是默认的Django页面:
我得到以下输出:
位于/的DisallowedHost
无效的HTTP_HOST标头:“ virenvtest.tst”。您可能需要将“ virenvtest.tst”添加到ALLOWED_HOSTS。
请求方法:GET
要求网址:http://virenvtest.tst/
Django版本:2.2.2
异常类型:DisallowedHost
异常值:
无效的HTTP_HOST标头:“ virenvtest.tst”。您可能需要将“ virenvtest.tst”添加到ALLOWED_HOSTS。
异常位置:get_host,第111行中的/home/raza/projects/djsample/djsampleenv/lib/python3.6/site-packages/django/http/request.py
Python可执行文件:/ usr / bin / python3
的Python版本:3.6.7
Python路径:
['/ home / raza / projects / djsample',
'/home/raza/projects/djsample/djsampleenv/lib/python36.zip',
'/home/raza/projects/djsample/djsampleenv/lib/python3.6',
'/home/raza/projects/djsample/djsampleenv/lib/python3.6/lib-dynload',
'/usr/lib/python3.6',
'/home/raza/projects/djsample/djsampleenv/lib/python3.6/site-packages']
服务器时间:2019年6月13日,星期四13:59:51 +0000