django - Apache 服务错误的 Django 项目
问题描述
我创建了两个 Django 项目,使用 virtualenv,并在 Ubuntu 18.04 上使用 wsgi 和两个虚拟主机通过 Apache2 为这两个项目提供服务。如果我在一个 .conf 文件中配置两个虚拟主机,则项目可以正常工作,但是如果我将一个 .conf 文件拆分为两个文件,每个虚拟主机一个文件,那么只有第一个主机(按字母顺序)有效,对于第二个主机,Apache 会尝试在第一个 Django 项目的文件夹中查找文件。
我正在使用 Ubuntu 18.04、Python 3.6 和 Django 2.2.2 和 Apache 2.4.29。这个问题是由不同的人在博客上共享的,我尝试了这些解决方案,但似乎没有什么对我有用。
以下单个配置文件工作正常:
<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 at / 无效的 HTTP_HOST 标头:'virenvtest.tst'。您可能需要将“virenvtest.tst”添加到 ALLOWED_HOSTS。请求方法:GET 请求 URL: http://virenvtest.tst/
Django 版本:2.2.2 异常类型:DisallowedHost 异常值:
无效的 HTTP_HOST 标头:'virenvtest.tst'。您可能需要将“virenvtest.tst”添加到 ALLOWED_HOSTS。异常位置:/home/raza/projects/djsample/djsampleenv/lib/python3.6/site-packages/django/http/request.py 在 get_host,第 111 行 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'] 服务器时间:Thu, 13 Jun 2019 13:59:51 +0000
解决方案
推荐阅读
- vue.js - 在 Vue.js 中使用计算并且在调用挂载时计算的属性仍然是空的
- schema.org - Schema.org 类型的非营利组织
- django - 如何减去 django 中的注释值?
- javascript - 材料步进器选择的索引无法正常工作
- r - U-SQL - 添加 R dplyr 包
- c++ - 如何在编译时从表达式设置变量值?
- passenger - 如何在 SUMO Simulator 中模拟乘客?
- angular - 向惰性模块添加动态路由
- ios - UIDocumentPickerViewController 委托在演示者的 viewWill/DidAppear 之前调用
- excel - Excel VBA - 说明