Обслуживание нескольких доменов с помощью Django и Apache приводит только к одному местоположению

Я пытаюсь настроить Django для обслуживания нескольких сайтов (в приведенной ниже конфигурации я использую примеры www.domain1.com и www.domain2.com). Я успешно установил Apache2, успешно (или так кажется) настроил wsgi.py.

Я создал свой конфигурационный файл appache для попытки следующего сопоставления:

www.example1.com для обслуживания из /var/www/mysite1 www.example2.com для обслуживания с /var/www/mysite2

Записи DNS A для example1.com и example2.com указывают на один и тот же IP-адрес.

Проблема с моей установкой в том, что и domain1.com, и domain2.com отображаются на Django, расположенный в /var/www/mysite1, несмотря на то, что я (теоретически) настроил их на отображение в соответствующих местах.

Мои конфигурационные файлы apache следующие, и оба файла (mysite1.conf и mysite2.conf) имеют симлинки, сделанные для них с помощью a2ensite:

#/etc/apache2/sites-available/mysite1.conf

WSGIDaemonProcess mysite processes=2 threads=25 python-home=/var/www/mysite1/myenv1 python-path=/var/www/mysite1/myenv1/mys
ite1
WSGIProcessGroup mysite
WSGIScriptAlias / /var/www/mysite1/myenv1/mysite1/mysite1/wsgi.py
<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias xx.xx.xx.xx
    DocumentRoot /var/www/mysite1

    ErrorLog ${APACHE_LOG_DIR}/mysite1-error.log
    CustomLog ${APACHE_LOG_DIR}/mysite1-access.log combined

    Alias /robots.txt /var/www/mysite1/myenv1/mysite1/static/robots.txt
    Alias /favicon.ico /var/www/mysite1/myenv1/mysite1/static/favicon.ico
    Alias /static/ /var/www/mysite1/myenv1/mysite1/static/

    <Directory /var/www/mysite1/myenv1/mysite1/mysite1>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    <Directory /var/www/mysite1/myenv1/mysite1/static>
        Require all granted
    </Directory>
</VirtualHost>

#/etc/apache2/sites-available/mysite2.conf
WSGIDaemonProcess mysite2 processes=2 threads=25 python-home=/var/www/mysite2/myenv2 python-path=/var/www/mysite2/myenv
2/mysite2
WSGIProcessGroup mysite2
WSGIScriptAlias / /var/www/mysite2/myenv2/mysite2/mysite2/wsgi.py process-group=mysite2
WSGISocketPrefix /var/run/wsgi

<VirtualHost *:80>
    ServerName domain2.com

    ErrorLog ${APACHE_LOG_DIR}/mysite2-error.log
    CustomLog ${APACHE_LOG_DIR}/mysite2-access.log combined
    DocumentRoot /var/www/mysite2
    Alias /robots.txt /var/www/mysite2/myenv2/mysite2/static/robots.txt
    Alias /favicon.ico /var/www/mysite2/myenv2/mysite2/static/favicon.ico
    Alias /static/ /var/www/mysite2/myenv2/mysite2/static/

    <Directory /var/www/mysite2/myenv2/mysite2/mysite2>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    <Directory /var/www/mysite2/myenv2/mysite2/static>
        Require all granted
    </Directory>
</VirtualHost>

Пример файла wsgi.py выглядит следующим образом, и работает правильно (т.е. загружается из правильного места), когда он загружается:

import os
import sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite1.settings'
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite1.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

Ни в одном из журналов (/var/syslog/apache2/mysiteX.conf, где x=1 или 2) не сообщается об ошибках

Что я делаю неправильно? Как я могу исправить это, чтобы домен2 начал отображаться на /var/www/mysite2?

Заранее большое спасибо!

Теги WSGI должны находиться внутри блока VirtualHost для соответствующих доменных имен.

E.g.

<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias xx.xx.xx.xx
    DocumentRoot /var/www/mysite1

    WSGIDaemonProcess mysite processes=2 threads=25 python-home=/var/www/mysite1/myenv1 python-path=/var/www/mysite1/myenv1/mys
    ite1
    WSGIProcessGroup mysite
    WSGIScriptAlias / /var/www/mysite1/myenv1/mysite1/mysite1/wsgi.py
    ...

</VirtualHost>
Вернуться на верх