Using a virtual environment will not help if you intend to still use Anaconda Python. You will still have the issue with the SSL libraries.
Are you thinking that a virtual environment will somehow solve the problem? > On 14 Jun 2018, at 11:34 am, Rajeev Jain <[email protected]> wrote: > > I want to thank you for the time you spent with me. It is clear, using > Anaconda with Apache is not a good idea. My objective now is to setup a > virtual environment, and then configure a Apache virtual host to use it. > There is a multitude of half complete solutions out there to accomplish this. > Would you be kind enough to point me to from your perspective the best guide > for this objective? I want to make sure the essential parameters are > correctly set. > > Any examples for the following files would very helpful: > > - wsgi.conf Would stay the same. > - wsgi.load Would still be output of mod_wsgi-express module-config. The difference would be that you would pip install mod_wsgi into the virtual environment first and run mod_wsgi-express module-config from there so loading module from correct place. > - myhost.conf Only difference here would be what python-home is set to. Should be value of sys.prefix for the virtual environment. Details in: * http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html <http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html> Note I missed one thing in the config. You also likely needed python-path option to WSGIDaemonProcess as well. Probably: python-path=/var/www/FlaskApp This is in addition to python-home. The python-path says where your project code is. If you use mod_wsgi-express as standalone server behind front end Apache proxy, then it will pretty well worry about this stuff for you. Just run it in the right directory and additional tell it where your static files should be mounted. > > I guess at this point wsgi.conf should contain nothing, wsgi.load would load > the appropriate mod_wsgi. Most of the magic will be in the virtualhost.conf > file, yes? > > I believe this to be a good path for getting this to work. > > thank-you again. > --Rajeev > > > On Wednesday, June 13, 2018 at 6:15:50 PM UTC-7, Graham Dumpleton wrote: > > >> On 14 Jun 2018, at 11:04 am, Rajeev Jain <[email protected] <>> wrote: >> >> Here is a more complete error log: >> >> [Wed Jun 13 17:55:33.173679 2018] [mpm_prefork:notice] [pid 2174] AH00169: >> caught SIGTERM, shutting down >> [Wed Jun 13 17:55:34.421101 2018] [mpm_prefork:notice] [pid 2501] AH00163: >> Apache/2.4.18 (Ubuntu) mod_wsgi/4.6.4 Python/3.6 configured -- resuming >> normal operations >> [Wed Jun 13 17:55:34.421158 2018] [core:notice] [pid 2501] AH00094: Command >> line: '/usr/sbin/apache2' >> [Wed Jun 13 17:55:34.576866 2018] [wsgi:error] [pid 2504] mod_wsgi >> (pid=2504): Failed to exec Python script file >> '/var/www/FlaskApp/flaskapp.wsgi'. >> [Wed Jun 13 17:55:34.576923 2018] [wsgi:error] [pid 2504] mod_wsgi >> (pid=2504): Exception occurred processing WSGI script >> '/var/www/FlaskApp/flaskapp.wsgi'. >> [Wed Jun 13 17:55:34.578129 2018] [wsgi:error] [pid 2504] Traceback (most >> recent call last): >> [Wed Jun 13 17:55:34.578169 2018] [wsgi:error] [pid 2504] File >> "/var/www/FlaskApp/flaskapp.wsgi", line 7, in <module> >> [Wed Jun 13 17:55:34.578182 2018] [wsgi:error] [pid 2504] from FlaskApp >> import app as application >> [Wed Jun 13 17:55:34.578189 2018] [wsgi:error] [pid 2504] File >> "/var/www/FlaskApp/FlaskApp/__init__.py", line 2, in <module> >> [Wed Jun 13 17:55:34.578192 2018] [wsgi:error] [pid 2504] from flask >> import Flask >> [Wed Jun 13 17:55:34.578197 2018] [wsgi:error] [pid 2504] File >> "/home/rajeev/anaconda3/lib/python3.6/site-packages/flask/__init__.py", line >> 21, in <module> >> [Wed Jun 13 17:55:34.578200 2018] [wsgi:error] [pid 2504] from .app >> import Flask, Request, Response >> [Wed Jun 13 17:55:34.578205 2018] [wsgi:error] [pid 2504] File >> "/home/rajeev/anaconda3/lib/python3.6/site-packages/flask/app.py", line 25, >> in <module> >> [Wed Jun 13 17:55:34.578207 2018] [wsgi:error] [pid 2504] from . import >> cli, json >> [Wed Jun 13 17:55:34.578212 2018] [wsgi:error] [pid 2504] File >> "/home/rajeev/anaconda3/lib/python3.6/site-packages/flask/cli.py", line 18, >> in <module> >> [Wed Jun 13 17:55:34.578218 2018] [wsgi:error] [pid 2504] import ssl >> [Wed Jun 13 17:55:34.578223 2018] [wsgi:error] [pid 2504] File >> "/home/rajeev/anaconda3/lib/python3.6/ssl.py", line 101, in <module> >> [Wed Jun 13 17:55:34.578225 2018] [wsgi:error] [pid 2504] import _ssl >> # if we can't import it, let the error propagate >> [Wed Jun 13 17:55:34.578243 2018] [wsgi:error] [pid 2504] ImportError: >> /home/rajeev/anaconda3/lib/python3.6/lib-dynload/_ssl.cpython-36m-x86_64-linux-gnu.so >> <http://ssl.cpython-36m-x86_64-linux-gnu.so/>: undefined symbol: >> SSLv2_method >> >> >> As a side note, I have 2 other php virtualhosts running on the same ubuntu >> box and pages are being served correctly. > > Those PHP sites are likely going to be the issue then as the PHP modules are > likely pulling in the SSL libraries. It could also be the LDAP related > modules, but more likely the PHP modules. > > What Anaconda Python does with supplying its own SSL libraries, as well as > other replacements for system libraries is a right pain and is going to break > any system where Python is being embedded in another process, such as is the > case with mod_wsgi and Apache. So isn't just the SSL libraries. Because PHP > can pull in image libraries, that can conflict with those in Anaconda Python > if using image manipulation packages like Pillow (PIL). > > If you have the existing PHP sites I don't really see a solution besides > running mod_wsgi-express to create a separate Apache/mod_wsgi instance and > then proxy that behind the main Apache. > > Some links which talk about mod_wsgi-express and running it like this are > below. Note that when using mod_wsgi-express it will automatically configure > the separate Apache instance for you, so it isn't as bad as it may seem. > > Introduction in: > > * http://blog.dscpl.com.au/2015/04/introducing-modwsgi-express.html > <http://blog.dscpl.com.au/2015/04/introducing-modwsgi-express.html> > > Details on having it behind a proxy. Ignore that it talks about Docker, is > still relevant. > > * http://blog.dscpl.com.au/2015/06/proxying-to-python-web-application.html > <http://blog.dscpl.com.au/2015/06/proxying-to-python-web-application.html> > * http://blog.dscpl.com.au/2015/07/redirection-problems-when-proxying-to.html > <http://blog.dscpl.com.au/2015/07/redirection-problems-when-proxying-to.html> > > Pre-create config so easier to integrate with system startup scripts. > > * > https://github.com/GrahamDumpleton/mod_wsgi#running-mod_wsgi-express-as-root > <https://github.com/GrahamDumpleton/mod_wsgi#running-mod_wsgi-express-as-root> > > Ignore that mentions root. You would need to run it on port other than 80 and > so doesn't need to run as root. > > So sorry, don't have a simple solution if you want to run with Anaconda > Python because of what Anaconda Python does with supplying its own libraries > which conflict with system libraries. > > Graham > > -- > 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 [email protected] > <mailto:[email protected]>. > To post to this group, send email to [email protected] > <mailto:[email protected]>. > Visit this group at https://groups.google.com/group/modwsgi > <https://groups.google.com/group/modwsgi>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- 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 [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/modwsgi. For more options, visit https://groups.google.com/d/optout.
