Hi Graham. Thanks very much for the prompt reply.
> > When using a Python virtual environment with mod_wsgi, it is very > important that it has been created using the same Python installation that > mod_wsgi was originally compiled for. It is not possible to use a Python > virtual environment to force mod_wsgi to use a different Python version, or > even a different Python installation. > > You cannot for example force mod_wsgi to use a Python virtual environment > created using Python 3.5 when mod_wsgi was originally compiled for Python > 2.7. This is because the Python library for the Python installation it was > originally compiled against is linked directly into the mod_wsgi module. In > other words, Python is embedded within mod_wsgi. When mod_wsgi is used it > does not run the command line python program to run the interpreter and > thus why you can’t force it to use a different Python installation. > After reading this, I still find myself a bit confused as to what is happening under the hood, though I suspect that this is a gap in my knowledge rather than a deficiency in the documentation. If I am in a virtualenv for a specific version of python, wouldn't a pip install mod-wsgi install a version of the module that is compiled against a similar version of python? It seems like a reasonable assumption, and one that generally speaking has worked well for me. In my use-case, I do not need to run the application in python 2 and 3 simultaneously, side-by-side on the same instance. It is completely acceptable for me to have either or. Do you still recommend using mod_wsgi-express? Thanks again Graham. I will more thoroughly review the documentation page that you linked below. Ryan On Wednesday, November 6, 2019 at 5:03:41 PM UTC-8, Graham Dumpleton wrote: > > Ensure you have read: > > > 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 <ryan...@gmail.com <javascript:>> > 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 mod...@googlegroups.com <javascript:>. > 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/63e2568a-aeb8-4b24-81b4-61012fe45b88%40googlegroups.com.