首页 > 解决方案 > 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

标签: djangoapache

解决方案


推荐阅读