Ensure you have read: https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html <https://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html>
The mod_wsgi module has to be compiled for the Python version you want to use as it links to the Python library, the Python executable is never itself run. You cannot use mod_wsgi compiled for a specific Python version with virtual environments for a different Python version. > On 7 Nov 2019, at 11:54 am, ryan west <ryanis...@gmail.com> wrote: > > Hello, > > I've spent a fair bit of time diagnosing this particular issue with > Apache/mod_wsgi and could use some pointers. Any help is extremely > appreciated. > > Versions > Ubuntu 14.04.6 LTS > Python 2.7.8 > Python 3.6.8 > mod-wsgi 4.3.2 (installed via pip) > Virtualenvs > /home/release/envs/stage-python2.7 > /home/release/envs/stage-python3.6 > Depending on which version of python I want this instance to use, a symlink > is created at /home/release/envs/stage that maps to either of the virtualenvs > above. In this example, I am simply trying to get it working with python 2.7. You can't do that. Suggest you use mod_wsgi-express instead and run separate instances of that for each Python version and then as necessary use the main system Apache to proxy to those separate instances. > > Apache Logs > > ryanwest@el8-stage-experimental-webapp1:/home/release/envs$ sudo tail > /var/log/apache2/error.log > [Wed Nov 06 16:38:51.586673 2019] [:info] [pid 2978:tid 139776709330816] > mod_wsgi (pid=2978): Python home /home/release/envs/stage/bin. > [Wed Nov 06 16:38:51.586681 2019] [:info] [pid 2978:tid 139776709330816] > mod_wsgi (pid=2978): Initializing Python. > [Wed Nov 06 16:38:51.585441 2019] [:info] [pid 2976:tid 139776709330816] > mod_wsgi (pid=2976): Starting process 'http.www.stage.domain.com' with > uid=33, gid=33 and threads=1. > [Wed Nov 06 16:38:51.588878 2019] [:info] [pid 2976:tid 139776709330816] > mod_wsgi (pid=2976): Python home /home/release/envs/stage/bin. > [Wed Nov 06 16:38:51.588886 2019] [:info] [pid 2976:tid 139776709330816] > mod_wsgi (pid=2976): Initializing Python. > [Wed Nov 06 16:38:51.589546 2019] [:info] [pid 2973:tid 139776709330816] > mod_wsgi (pid=2973): Python home /home/release/envs/stage/bin. > [Wed Nov 06 16:38:51.589559 2019] [:info] [pid 2973:tid 139776709330816] > mod_wsgi (pid=2973): Initializing Python. > ImportError: No module named site > ImportError: No module named site > ImportError: No module named site The error is specifically because you are mixing Python versions. > Apache Conf (/etc/apache2/sites-available/stage.conf) > ryanwest@el8-stage-experimental-webapp1:/home/release/envs$ cat > /etc/apache2/sites-available/stage.conf > # LB TERMINATED > <VirtualHost *:80> > > # apache default of 8190 is too small because we have some long uri > LimitRequestLine 81900 > > ServerName www.stage.domain.com > > DocumentRoot "/opt/domain/sites/www.stage.domain.com/current" > > ErrorLog "/var/log/domain/www.stage.domain.com/www.error.django.log" > > LogLevel debug > > WSGIDaemonProcess http.www.stage.domain.com user=www-data > maximum-requests=5000 processes=30 threads=1 python-eggs=/tmp > display-name='%{GROUP}' python-home=/home/release/envs/stage/bin > WSGIProcessGroup http.www.stage.domain.com > WSGIApplicationGroup http.www.stage.domain.com > WSGIImportScript /opt/domain/sites/www.stage.domain.com/wsgi_imports.py > process-group=http.www.stage.domain.com > application-group=http.www.stage.domain.com > WSGIScriptAlias / /opt/domain/sites/www.stage.domain.com/virtualenv.wsgi > # APP-8453: WSGI doesn't pass through auth headers by default > WSGIPassAuthorization On > > XSendFile on > XSendFilePath /mnt/www.stage.domain.com/media > XSendFilePath /opt/domain/sites/www.stage.domain.com/current/media > > RewriteEngine on > ProxyRequests On > SSLProxyEngine on > > RewriteCond %{DOCUMENT_ROOT}/downtime-enabled.html -l > RewriteCond %{REQUEST_URI} !\.(css|jpg|gif|png)$ > RewriteCond %{HTTP_HOST} !^\w+1\. > RewriteCond %{SCRIPT_FILENAME} !downtime-enabled.html > RewriteRule ^.*$ %{DOCUMENT_ROOT}/downtime-enabled.html [L] > > </VirtualHost> > > In this case, /home/release/envs/stage is a symlink to a python2.7 virtualenv: > > ryanwest@el8-stage-experimental-webapp1:/home/release/envs$ ls -l > total 8 > lrwxrwxrwx 1 root root 34 Nov 6 12:11 stage -> > /home/release/envs/stage-python2.7 > drwxr-xr-x 6 release root 4096 Nov 6 15:41 stage-python2.7 > drwxr-xr-x 4 release root 4096 Nov 6 12:10 stage-python3.6 > > ryanwest@el8-stage-experimental-webapp1:/home/release/envs$ ls -l > stage-python2.7 > total 16 > drwxr-xr-x 2 release root 4096 Nov 6 14:27 bin > drwxr-xr-x 2 release root 4096 Nov 6 12:10 include > drwxr-xr-x 3 release root 4096 Nov 6 12:10 lib > drwxr-xr-x 3 root root 4096 Nov 6 12:15 man > > ryanwest@el8-stage-experimental-webapp1:/home/release/envs$ > stage-python2.7/bin/python --version > Python 2.7.8 > ryanwest@el8-stage-experimental-webapp1:/home/release/envs$ > stage-python3.6/bin/python --version > Python 3.6.8 > > I realize that pointing python-home to the bin directory is strange. When I > point it to simply /home/release/envs/stage, the apache error logs default to > saying python home is /usr/bin/python. The Python executable is never invoked. What the location is reported as within the process doesn't matter. > As a side note, my Apache logs don't seem to be providing me with many > pertinent details. I have tried increasing the verbosity using LogLevel debug > with no success. > > What am I doing wrong? Thank you! > > Ryan > > -- > You received this message because you are subscribed to the Google Groups > "modwsgi" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to modwsgi+unsubscr...@googlegroups.com > <mailto:modwsgi+unsubscr...@googlegroups.com>. > To view this discussion on the web visit > https://groups.google.com/d/msgid/modwsgi/cd2d57fa-18c3-449f-92fe-47ccb46acf36%40googlegroups.com > > <https://groups.google.com/d/msgid/modwsgi/cd2d57fa-18c3-449f-92fe-47ccb46acf36%40googlegroups.com?utm_medium=email&utm_source=footer>. -- You received this message because you are subscribed to the Google Groups "modwsgi" group. To unsubscribe from this group and stop receiving emails from it, send an email to modwsgi+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/modwsgi/870FA5D4-F496-4042-80DB-BE2BE7823D4C%40gmail.com.