Deployment#
coltrane
can be installed with deployment features for production by installing the deploy
extras.
poetry add coltrane -E deploy
Note
If using pip
you can do something like: pip install coltrane[deploy]
.
Required settings#
DEBUG
should beFalse
(more details in Django docs).ALLOWED_HOSTS
must be set to the acceptable host or domain names (more details in Django docs).
DEBUG=False
ALLOWED_HOSTS=coltrane.com,www.coltrane.com
Gunicorn#
gunicorn
is a production WSGI
server and is perfect for serving coltrane
apps.
An example command for using gunicorn
in production: poetry run gunicorn -b localhost:8000 app:wsgi
.
Whitenoise#
whitenoise
allows regular WSGI
servers to serve static files without needing to move assets to S3 or another hosted file platform. It will be configured automatically when DEBUG
is set to False
.
Hosting#
Docker#
A sample Dockerfile
is created for new Coltrane
projects. It can be used along with gunicorn.conf.py
for any hosting platform that supports Docker
.
Heroku#
Heroku will run the collectstatic
management command by default for Django projects, but this should be disabled by setting the DISABLE_COLLECTSTATIC
environment variable to 1
. Add the nginx buildpack from https://buildpack-registry.s3.amazonaws.com/buildpacks/heroku-community/nginx.tgz.
Then, add the following files so that nginx
will serve the static files efficiently.
gunicorn.conf.py
def when_ready(server):
# touch app-initialized when ready
open("/tmp/app-initialized", "w").close()
bind = "unix:///tmp/nginx.socket"
workers = 3
Procfile
web: python app.py collectstatic --noinput && bin/start-nginx gunicorn -c gunicorn.conf.py app:wsgi
render.com#
Set the
PYTHON_VERSION
environment variable to the desired Python version (must be at least 3.8)
Go to
settings
and usepip install poetry && poetry install && poetry run coltrane build
for theBuild Command