Serving Flask with nginx

Installing Common Python Tools for Deployment
:
apt-get install -y python python-dev python-distribute python-pip
apt-get install nginx

Installing The Web Application and Its Dependencies
Download and install Flask and uwsgi using pip

pip install virtualenv
mkdir /var/www/ngstones.com && cd /var/www/ngstones.com
virtualenv -p /usr/bin/python venv
source venv/bin/activate
pip install uwsgi
pip install flask

rm /etc/nginx/conf.d/default

vim /etc/nginx/conf.d/ngstones

server {
listen 80;
server_name 10.0.0.2;
charset utf-8;
client_max_body_size 75M;

location / { try_files $uri @ngstones; }
location @ngstones {
include uwsgi_params;
uwsgi_pass unix:/var/www/ngstones.com/demoapp_uwsgi.sock;
}
}

vim /var/www/ngstones.com/demoapp_uwsgi.ini

[uwsgi]
#application's base folder
base = /var/www/ngstones.com

#python module to import
app = hello
module = %(app)

home = %(base)/venv
pythonpath = %(base)

#socket file’s location
socket = /var/www/ngstones.com/%n.sock

#permissions for the socket file
chmod-socket = 666

#the variable that holds a flask application inside the module imported at line #6
callable = app

#location of log files
logto = /var/log/uwsgi/%n.log

vim /var/www/ngstones.com/hello.py
from flask import Flask
app = Flask(__name__)
@app.route(“/”)
def hello():
return “Hello!”
if __name__ == “__main__”:
app.run()

Restart Nginx to load new config file
service nginx restart
cd /var/www/ngstones.com/
uwsgi --ini /var/www/ngstones.com/demoapp_uwsgi.ini

Finally update your DNS and you are good to go!

Serving Flask with nginx

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s