#Starting Python Web development in Mac OS X#
Objective: Getting started with Python Development Operating System: Mac OS X Python version installed: 3.5 (5th December 2015)
Downoad the lastest Python from https://www.python.org/downloads/
Mac OS uses default 2.x version out of box. To check whether, python has been installed successfully. try the following command.
python3 -V
Python 3.5.0
Above step ensure that Python 3.5 has been installed successfully.
This is the high level outline of this post: Mas OS X -> Python 3.5 -> Virtaulenv -> Flask --> app.py(first Hello world )
Installing virtaulenv: (Step 1 of Why use virtualenv?
- Having different version of libraries for different projects
- Solves the elevated privillege issue as virtualenv allows you to install with user permission
sudo pip3 install virtualenv
virtualenv --version
13.1.2
Now lets create the first flask app
mkdir ~/projects
cd ~/projects
Now we will create a virtualenv
virtualenv hello_flask
cd hello_flask
If you list the contents of the hello_flask directory, you will see that it has created several sub-directories, including a bin folder (Scripts on Windows) that contains copies of both Python and pip. The next step is to activate your new virtualenv.
source bin/activate
Installing Flask in your virtaulenv
pip install Flask
Hello, Flask
Create a new file called app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello, Flask!'
if __name__ == '__main__':
app.run(debug=True)
Open the web browser with http://localhost:5000
I was trying to test out the deployment using nginx, but could not make it work in OS X, did not try the steps in Ubuntu. Though I am sure that it should work well in Ubuntu as all articles point out the usage in Ubuntu.
Installed nginx in Mac OS X.
Installed gunicorn.
Created a wsgi.py file and started the server using
gunicorn --bind 127.0.0.1:5000 wsgi:app
Tested the url and I was able to get my home page.
Went to path /usr/local/etc/nginx and edited the nginx.config file and added the below code
`
server {
listen 80;
listen [::]:80;
server_name api.example.com;
}
`