If want to use conda env, just try it. Differences are: 3. Activate conda env.
8. Do same, but just use directory that 'sys.prefix' refers to for conda env. It is quite likely it will work, I just don't remember right now and can't quickly test. Graham > On 12 May 2017, at 6:34 AM, Brian <[email protected]> wrote: > > Graham, > > Thank you so much. I plan to use Anaconda for this project and so maybe using > another tool is best? I don't want to give up on this direction if you think > it will be fruitful, but maybe nginx + gunicorn + flask in a conda installed > env is better? I'm even considering just deploying to Heroku. > > Thanks again and if you have any thoughts, I'm certainly game to hear what > you think. > > Best, > -Brian > On Tuesday, May 9, 2017 at 7:52:04 PM UTC-6, Graham Dumpleton wrote: > If you want to use Anaconda Python with mod_wsgi, the steps you need to > follow are as follows. > > 1. Uninstall any system wide mod_wsgi package as you do not need it and it > can interfere. > > sudo apt-get uninstall libapache2-mod-wsgi > > 2. Ensure 'dev' packages for Python and Apache installed. > > 3. You are better off using virtual environment created using virtualenv > rather than using a conda env. I am not sure what set up steps need to be if > using conda env right now. With virtual environment created using virtualenv, > activate it. > > 4. Install mod_wsgi using pip. > > 5. Run: > > mod_wsgi-express module-config > > and take the output of this and put it in a 'wsgi.load' file in the > 'mods-available' directive of your Apache installation. > > 6. Enable the Apache module. Either run: > > sudo a2enmod wsgi > > or symlink wsgi.load in to the 'mods-enabled' directory and restart Apache. > > Verify that Apache starts up okay. > > 7. Manually configure Apache for mod_wsgi with a WSGI hello world program, > restart Apache and verify that it works. > > 8. Add configuration for mod_wsgi to Apache sites file for your Flask > application. Use the recommended steps for setting up a Python virtual > environment as documented in: > > > http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html > > <http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html> > > Don't use 'python-path' with 'site-packages'. Use 'python-home' with the root > of the Python virtual environment instead. > > See if it works. > > Would like to see you use virtualenv before we sort out what needs to be done > for conda env. I can't remember right now how compatible conda env > directories are with normal Python virtual environments. > > Graham > >> On 9 May 2017, at 6:55 AM, Graham Dumpleton <Graham.D...@ <>gmail.com >> <http://gmail.com/>> wrote: >> >> Just read again. You are using system package for mod_wsgi, not that >> installed for Anaconda. You should not be using both installs. Will send >> back instructions later when have time. >> >> Graham >> >>> On 9 May 2017, at 6:47 AM, Brian <the.lehm...@ <>gmail.com >>> <http://gmail.com/>> wrote: >>> >>> Thanks Graham. >>> >>> I did edit the FlaskApp.config file: >>> <VirtualHost *:80> >>> ServerName <public ip>.us-west-2.compute.amazonaws.com >>> <http://us-west-2.compute.amazonaws.com/> >>> ServerAdmin ubuntu@ec2-<public >>> ip>.us-west-2.compute.amazonaws.com >>> <http://us-west-2.compute.amazonaws.com/> >>> WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi >>> <Directory /var/www/FlaskApp/FlaskApp/> >>> Order allow,deny >>> Allow from all >>> </Directory> >>> Alias /static /var/www/FlaskApp/FlaskApp/static >>> <Directory /var/www/FlaskApp/FlaskApp/static/> >>> Order allow,deny >>> Allow from all >>> </Directory> >>> WSGIDaemonProcess FlaskApp >>> python-path=/home/ubuntu/anaconda3/envs/test1.0/lib/python3.6/site-packages >>> ErrorLog ${APACHE_LOG_DIR}/error.log >>> LogLevel warn >>> CustomLog ${APACHE_LOG_DIR}/access.log combined >>> </VirtualHost> >>> >>> And then applied following new step in the process: >>> >>> ## get apache2 >>> sudo apt-get install apache2 >>> sudo apt-get install apache2-dev >>> >>> ## get mod_wsgi >>> #sudo apt-get install libapache2-mod-wsgi >>> pip install mod_wsgi >>> >>> ## force load Anaconda's shared library >>> mod_wsgi-express module-config >>> >>> ## enable mod_wsgi >>> sudo a2enmod wsgi >>> >>> ## Install and register the mod_wsgi module with Apache >>> <-------------------------- >>> sudo `which mod_wsgi-express` install-module >>> >>> ## get git >>> sudo apt-get install git >>> >>> ## create apache config >>> touch /etc/apache2/sites-available/FlaskApp.conf >>> >>> ## disable default config >>> sudo a2dissite 000-default >>> >>> ## provide new config >>> sudo a2ensite FlaskApp.conf >>> >>> ## start/restart apache >>> sudo service apache2 restart >>> >>> The same error occurs in the log: >>> Traceback (most recent call last): >>> File "/var/www/FlaskApp/flaskapp.wsgi", line 7, in <module> >>> from FlaskApp import app as application >>> File "/var/www/FlaskApp/FlaskApp/__init__.py", line 1, in <module> >>> from flask import Flask >>> ImportError: No module named flask >>> >>> Thoughts? >>> >>> Best, >>> -Brian >>> On Monday, May 8, 2017 at 2:21:12 PM UTC-6, Graham Dumpleton wrote: >>> Did you read: >>> >>> >>> http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html >>> >>> <http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html> >>> >>> as I linked to. >>> >>> There is no evidence that you have added anything for a Python virtual >>> environment if you are using one. >>> >>> Graham >>> >>>> On 9 May 2017, at 4:25 AM, Brian <the.lehm...@ <>gmail.com >>>> <http://gmail.com/>> wrote: >>>> >>>> The conda environment must not be set correctly because it can't find >>>> flask: >>>> >>>> [Mon May 08 16:39:11.002873 2017] [:error] [pid 31696:tid 139896253531904] >>>> [client 208.184.3.194:36413] Traceback (most recent call last): >>>> >>>> >>>> >>>> [Mon May 08 16:39:11.002923 2017] [:error] [pid 31696:tid 139896253531904] >>>> [client 208.184.3.194:36413] File "/var/www/FlaskApp/flaskapp.wsgi", >>>> line 7, in <module> >>>> >>>> [Mon May 08 16:39:11.002989 2017] [:error] [pid 31696:tid 139896253531904] >>>> [client 208.184.3.194:36413] from FlaskApp import app as application >>>> >>>> [Mon May 08 16:39:11.003012 2017] [:error] [pid 31696:tid 139896253531904] >>>> [client 208.184.3.194:36413] File >>>> "/var/www/FlaskApp/FlaskApp/__init__.py", line 1, in <module> >>>> >>>> [Mon May 08 16:39:11.003044 2017] [:error] [pid 31696:tid 139896253531904] >>>> [client 208.184.3.194:36413] from flask import Flask >>>> >>>> [Mon May 08 16:39:11.003081 2017] [:error] [pid 31696:tid 139896253531904] >>>> [client 208.184.3.194:36413] ImportError: No module named flask >>>> >>>> >>>> On Monday, May 8, 2017 at 11:45:31 AM UTC-6, Vanessa Marques wrote: >>>> Brian, check out /var/log/apache2/error.log to see the errors and let us >>>> know what is in there. >>>> >>>> I'm having the exact same challenge as you (trying to configure flask + >>>> apache + anaconda + mod_wsgi on an ubuntu EC2 instance). >>>> >>>> On Monday, May 8, 2017 at 1:59:16 PM UTC-3, Brian wrote: >>>> Thank you Graham. >>>> >>>> Any recs on testing and/or debugging a 500 internal server error when I >>>> try to hit the site? I'm assuming that it's in the configuration so I'm >>>> going to add full details of the process and config files below. >>>> >>>> All commands ran: >>>> ## build conda environment >>>> >>>> conda create --name test1.0 python==3.6.1 pandas jupyter requests flask >>>> >>>> >>>> >>>> ## activate conda environment >>>> >>>> source activate test1.0 >>>> >>>> >>>> ## get apache2 >>>> >>>> sudo apt-get install apache2 >>>> >>>> sudo apt-get install apache2-dev >>>> >>>> >>>> >>>> ## get mod_wsgi >>>> >>>> #sudo apt-get install libapache2-mod-wsgi >>>> >>>> pip install mod_wsgi >>>> >>>> >>>> >>>> ## force load Anaconda's shared library >>>> >>>> mod_wsgi-express module-config >>>> >>>> >>>> >>>> ## enable mod_wsgi >>>> >>>> sudo a2enmod wsgi >>>> >>>> >>>> >>>> ## get git >>>> >>>> sudo apt-get install git >>>> >>>> >>>> >>>> ## create config for apache to know about wsgi and flask app >>>> >>>> touch /etc/apache2/sites-available/FlaskApp.conf >>>> >>>> >>>> >>>> ## disable default config >>>> >>>> sudo a2dissite 000-default >>>> >>>> >>>> >>>> ## provide new config >>>> >>>> sudo a2ensite FlaskApp.conf >>>> >>>> >>>> >>>> ## start/restart apache >>>> >>>> sudo service apache2 restart >>>> >>>> >>>> Contents of FlaskApp.conf: >>>> <VirtualHost *:80> >>>> >>>> ServerName <IPv4 PUBLIC IP> >>>> >>>> ServerAdmin ubuntu@<IPv4 PUBLIC >>>> IP>.us-west-2.compute.amazonaws.com >>>> <http://us-west-2.compute.amazonaws.com/> >>>> WSGIScriptAlias / /var/www/FlaskApp/flaskapp.wsgi >>>> >>>> <Directory /var/www/FlaskApp/FlaskApp/> >>>> >>>> Order allow,deny >>>> >>>> Allow from all >>>> >>>> </Directory> >>>> >>>> Alias /static /var/www/FlaskApp/FlaskApp/static >>>> >>>> <Directory /var/www/FlaskApp/FlaskApp/static/> >>>> >>>> Order allow,deny >>>> >>>> Allow from all >>>> >>>> </Directory> >>>> >>>> ErrorLog ${APACHE_LOG_DIR}/error.log >>>> >>>> LogLevel warn >>>> >>>> CustomLog ${APACHE_LOG_DIR}/access.log combined >>>> >>>> </VirtualHost> >>>> >>>> >>>> Location of flask app and .wsgi file. >>>> (test1.0) ubuntu:/var/www$ tree >>>> >>>> . >>>> >>>> ├── FlaskApp >>>> >>>> ├── FlaskApp >>>> >>>> │ ├── __init__.py >>>> >>>> │ ├── static >>>> >>>> │ └── templates >>>> >>>> └── flaskapp.wsgi >>>> >>>> >>>> Contents of flaskapp.wsgi: >>>> #!/usr/bin/python >>>> >>>> import sys >>>> >>>> import logging >>>> >>>> logging.basicConfig(stream=sys.stderr) >>>> >>>> sys.path.insert(0,"/var/www/FlaskApp/") >>>> >>>> >>>> >>>> from FlaskApp import app as application >>>> >>>> application.secret_key = '<secret>' >>>> >>>> >>>> Contents of __init__.py: >>>> from flask import Flask >>>> >>>> app = Flask(__name__) >>>> >>>> @app.route("/") >>>> >>>> def hello(): >>>> >>>> return "Hello World (flask via conda env)!" >>>> >>>> if __name__ == "__main__": >>>> >>>> app.run() >>>> >>>> >>>> When visiting the site, I get a 500 internal server error. I likely messed >>>> up something with the config. Any help is greatly appreciated. >>>> >>>> Best, >>>> -Brian >>>> >>>> On Sunday, May 7, 2017 at 6:32:18 PM UTC-6, Graham Dumpleton wrote: >>>> In the first instance you should ensure things work with a WSGI hello >>>> world, no Flask framework. This ensures setup with Anaconda Python is >>>> okay, which sometimes doesn't always work because of stupid things >>>> Anaconda Python does which breaks the ability to use it in embedded >>>> systems. >>>> >>>> As to deploying Flask, the Flask documentation has details: >>>> >>>> * http://flask.pocoo.org/docs/0.12/deploying/mod_wsgi/ >>>> <http://flask.pocoo.org/docs/0.12/deploying/mod_wsgi/> >>>> >>>> Also ensure you read: >>>> >>>> * >>>> http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html >>>> >>>> <http://modwsgi.readthedocs.io/en/develop/user-guides/virtual-environments.html> >>>> >>>> so you are setting up any Python virtual environment correctly as guides >>>> for frameworks often don't suggest the preferred method, or simply don't >>>> address it. >>>> >>>> Graham >>>> >>>>> On 7 May 2017, at 8:00 AM, Brian Lehman <[email protected] <>> wrote: >>>>> >>>>> Thanks Graham. So everything is installed. Being brand new to this world, >>>>> I'm looking for a tutorial to (and please forgive me as I'm likely using >>>>> the wrong terminology) see how to tell Apache to use mod_wsgi to run my >>>>> flask app. I'm guessing that I need to change some config files in Apache >>>>> to use my conda environment and then write some .wsgi file? However, I'm >>>>> seeing quite a few different threads on this subject. Any advice is >>>>> greatly appreciated. >>>>> >>>>> ## get apache2 >>>>> sudo apt-get install apache2 >>>>> sudo apt-get install apache2-dev >>>>> >>>>> ## get mod_wsgi >>>>> pip install mod_wsgi >>>>> >>>>> #force load Anaconda's shared library >>>>> mod_wsgi-express module-config >>>>> >>>>> ## start/restart apache >>>>> sudo service apache2 restart >>>>> >>>>> On Thursday, May 4, 2017 at 4:22:08 PM UTC-6, Graham Dumpleton wrote: >>>>> As per instructions in: >>>>> >>>>> https://pypi.python.org/pypi/mod_wsgi >>>>> <https://pypi.python.org/pypi/mod_wsgi> >>>>> >>>>> You need to ensure you have the 'dev' packages for Apache installed. >>>>> >>>>> If you are running Debian or Ubuntu Linux with Apache 2.4 system >>>>> packages, regardless of which Apache MPM is being used, you would need >>>>> both: >>>>> >>>>> apache2 >>>>> apache2-dev >>>>> >>>>> Note that if using Anaconda Python, after having installed mod_wsgi with >>>>> pip, ensure you run: >>>>> >>>>> mod_wsgi-express module-config >>>>> >>>>> to show the configuration you need to include in the system Apache if you >>>>> intend manually configuring it for mod_wsgi, instead of using >>>>> 'mod_wsgi-express start-server'. >>>>> >>>>> This is necessary as Anaconda Python can require extra configuration >>>>> directives to force load its shared library. That command should output >>>>> the appropriate lines, although just check that the generated line for >>>>> LoadFile directive actually points at a valid path. Seen one report where >>>>> for Anaconda Python the path it generated was wrong and it had to be >>>>> changed. >>>>> >>>>> Graham >>>>> >>>>>> On 5 May 2017, at 2:54 AM, Brian Lehman <the.lehm...@ <>gmail.com >>>>>> <http://gmail.com/>> wrote: >>>>>> >>>>>> Good day. When I try to pip install mod_wsgi inside of an anaconda env >>>>>> called test1.0 on an aws ec2 instance w/ ubuntu, I get the folowing >>>>>> error. Any suggestions? >>>>>> >>>>>> (test1.0) ubuntu$ python --version >>>>>> >>>>>> Python 3.6.1 :: Continuum Analytics, Inc. >>>>>> >>>>>> (test1.0) ubuntu$ >>>>>> >>>>>> (test1.0) ubuntu$ >>>>>> >>>>>> (test1.0) ubuntu$ pip install mod_wsgi >>>>>> >>>>>> Collecting mod_wsgi >>>>>> >>>>>> Using cached mod_wsgi-4.5.15.tar.gz >>>>>> >>>>>> Complete output from command python setup.py egg_info: >>>>>> >>>>>> Traceback (most recent call last): >>>>>> >>>>>> File "<string>", line 1, in <module> >>>>>> >>>>>> File "/tmp/pip-build-80walwu3/mod-wsgi/setup.py", line 164, in >>>>>> <module> >>>>>> >>>>>> 'missing Apache httpd server packages.' % APXS) >>>>>> >>>>>> RuntimeError: The 'apxs' command appears not to be installed or is >>>>>> not executable. Please check the list of prerequisites in the >>>>>> documentation for this package and install any missing Apache httpd >>>>>> server packages. >>>>>> >>>>>> >>>>>> ---------------------------------------- >>>>>> >>>>>> Command "python setup.py egg_info" failed with error code 1 in >>>>>> /tmp/pip-build-80walwu3/mod-wsgi/ >>>>>> >>>>>> >>>>>> -- >>>>>> 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+u...@ <>googlegroups.com <http://googlegroups.com/>. >>>>>> To post to this group, send email to mod...@ <>googlegroups.com >>>>>> <http://googlegroups.com/>. >>>>>> 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 >>>>> <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 >>>> <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 >>> <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] > <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.
