Setuping flask with gunicorn, supervisord, nginx

Flask application

Flask is a microframework for Python based on Werkzeug, Jinja 2 and good intentions.
from flask import Flask, render_template

DEBUG = True
SECRET_KEY = '_secret_'

app = Flask(__name__)
app.config.from_object(__name__)

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run()

nginx configuration file

Nginx is a web server with a strong focus on high concurrency, performance and low memory usage.
server {
    server_name something.ua www.something.ua;

    location / {
        proxy_pass http://unix:/home/www/something/run/block.socket;
        include /etc/nginx/proxy.conf;        
    }

    location /static {
        root /home/www/something/app;
        expires 24h;
    }
}

supervisord configuration file

Supervisor is a client/server system that allows its users to monitor and control a number of processes on UNIX-like operating systems.
[program:something]
command=/home/www/.virtualenvs/something/bin/gunicorn -c /home/www/something/conf/gunicorn.conf.py --chdir /home/www/something/app wsgi:app
directory=/home/www/something/app
user=www
group=www
autostart=True
autorestart=True
redirect_stderr=True
daemon = False
debug = False
stdout_logfile=/home/www/something/logs/supervisor.log
loglevel = "info"
environment = PYTHON_EGG_CACHE="/home/www/something/.python-eggs"

wsgi.py file

from app import app

if __name__ == "__main__":
    app.run()

gunicorn configuration file

Gunicorn 'Green Unicorn' is a Python WSGI HTTP Server for UNIX.
bind = "unix:/home/www/something/run/block.socket"
workers = 2
logfile = "/home/www/something/logs/gunicorn.log"
loglevel = "warning"
proc_name = "something"
daemon = False
debug = False
user="www"
comments powered by Disqus