'Run Django Website with different mod_wsgi than default

I have an Apache2 server hosting multiple Django websites. All except one use Django 3.8, using a mod_wsgi compiled on Python 3.7. The outlier (let's call it SiteX) uses Django 4.0, which requires Python 3.8+. I want SiteX to use a virtual environment with these newer versions of Python and Django, while the other sites keep using their default versions.

For SiteX, I've created a virtual environment venv in its directory. But from what I understand, the current mod_wsgi installed is not compatible with its version of Python, so specifying WSGIPythonHome in the conf file won't do anything.

the current mod_wsgi (4.7/python 3.7) is loaded in /etc/apache2/mods-available/wsgi.load with the line

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

I've tried creating a new mod_wsgi, this time using the Python module mod_wsgi, which I've installed in venv. In the .conf file for a group of Django sites (that include SiteX) I tried specifying this unique version of the mod_wsgi above the <VirtualHost> block with the line:

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"

but running $ apachectl configtest says: module wsgi_module is already loaded, skipping.

I found a solution for multiple mod_wsgi's using WSGIDaemonProcess but the solution's .conf looks slightly different that mine. Below is a snippet of the relevant lines of the .conf, but I'm not sure where to insert 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>

In addition I am not sure where to locate relevant .wsgi files for this.

Is my goal even tractable? It would be a nuisance if I'd have to downgrade SiteX just for this reason.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source