I just had to do this for a project at work and realized there wasn’t a lot of good direction out there for how to do it; here’s a minimal approach to getting you working with nginx in front of django requests via gunicorn. Most of the work is really done by ryandotsmith, this is just for Python instead of Ruby.
heroku config:set BUILDPACK_URL=https://github.com/ddollar/heroku-buildpack-multi.git echo 'https://github.com/ryandotsmith/nginx-buildpack.git' >> .buildpacks echo 'https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/python.tgz' >> .buildpacks git add .buildpacks git commit -m 'Added multi-buildpack nginx and python'
import multiprocessing def pre_fork(server, worker): f = '/tmp/app-initialized' open(f, 'w').close() bind = 'unix:///tmp/nginx.socket' workers = multiprocessing.cpu_count() * 2 + 1
Since New Relic has a free tier, and it’s so easy to use, I’m adding it here, too.
web: bin/start-nginx newrelic-admin run-program gunicorn -c gunicorn.conf AppName.wsgi:application