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
>
> 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 <[email protected] 
> <javascript:>> 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 <[email protected] <javascript:>> 
> wrote:
>
> Thanks Graham. 
>
> I did edit the FlaskApp.config file:
>
> <VirtualHost *:80>
>                 ServerName <public ip>.us-west-2.compute.amazonaws.com
>                 ServerAdmin ubuntu@ec2-<public ip>.
> 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
>>
>> 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 <[email protected]> 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
>>>>
>>>>                 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/
>>>>>
>>>>> Also ensure you read:
>>>>>
>>>>> * 
>>>>> 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
>>>>>>
>>>>>> 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 <[email protected]> 
>>>>>> 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 [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.
>>>>>>
>>>>>>
>>>>>>
>>>>> -- 
>>>>> 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.
>>>>>
>>>>>
>>>>>
>> -- 
>> 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.
>>
>>
>>
> -- 
> 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] <javascript:>.
> To post to this group, send email to [email protected] <javascript:>
> .
> Visit this group at https://groups.google.com/group/modwsgi.
> For more options, visit 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.

Reply via email to