Запустите веб-сайт Django с mod_wsgi, отличным от установленного по умолчанию

У меня есть сервер Apache2, на котором размещено несколько сайтов Django. Все, кроме одного, используют Django 3.8, используя mod_wsgi, скомпилированный на Python 3.7. Исключающий сайт (назовем его SiteX) использует Django 4.0, который требует Python 3.8+. Я хочу, чтобы SiteX использовал виртуальную среду с этими более новыми версиями Python и Django, в то время как другие сайты продолжают использовать свои версии по умолчанию.

Для SiteX я создал виртуальную среду venv в его директории. Но, насколько я понимаю, установленный в настоящее время mod_wsgi не совместим с его версией Python, поэтому указание WSGIPythonHome в conf-файле ничего не даст

текущий mod_wsgi (4.7/python 3.7) загружается в /etc/apache2/mods-available/wsgi.load строкой

LoadModule wsgi_module /usr/lib/apache2/modules/mod_wsgi.so

Я попробовал создать новый mod_wsgi, на этот раз используя модуль Python mod_wsgi, который я установил в venv. В файле .conf для группы сайтов Django (которые включают SiteX) я попробовал указать эту уникальную версию mod_wsgi над блоком <VirtualHost> строкой:

LoadModule wsgi_module "/var/www/html/app/SiteX/venv/lib/python3.9/site-packages/mod_wsgi/server/mod_wsgi-py39.cpython-39-x86_64-linux-gnu.so"

но запуск $ apachectl configtest говорит: module wsgi_module is already loaded, skipping.

Я нашел решение для нескольких mod_wsgi с использованием WSGIDaemonProcess, но .conf выглядит несколько иначе, чем мое. Ниже приведен фрагмент соответствующих строк из .conf, но я не уверен, куда вставить WSGIDaemonProcess.

<IfModule mod_ssl.c>
    # LoadModule wsgi_module, WSGIPythonHome, WSGIPythonPath here?
    <VirtualHost _default_:443>
    ...
    Alias /static /var/www/html/app/imagingTracking/static/
    ...
    # other django website Directory blocks here
    ...


    <Directory /var/www/html/app/SiteX/static/>
        Require all granted
    </Directory>

    <Directory /var/www/html/app/SiteX/SiteX/>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>
    </VirtualHost>
</IfModule>

Кроме того, я не уверен, где найти соответствующие .wsgi файлы для этого.

Является ли моя цель вообще достижимой? Будет неприятно, если мне придется понизить рейтинг SiteX только по этой причине.

Вернуться на верх