Releasing the site on production
Setting Boorunaut on Heroku with PostgreSQL
To install Boorunaut on a Heroku server, you will need to make some changes on the default settings to make it work with PostgreSQL.
First, create a project for your site:
pip install Boorunaut
boorunaut startproject mysite
Once it's done, you need to add Heroku-related files. Create a requirements.txt
file on the root of the project with:
Boorunaut==0.1
psycopg2==2.7.6.1
gunicorn==19.9.0
Create a Procfile
for Heroku:
web: gunicorn <mysite>.wsgi --log-file -
Configuring the settings.py file
You will need to make some adjustments to the default settings.py generated to use in production. These involve configurating a new database and transforming sensitive data into environment variables (an security measure).
Automatic configuration
Heroku has an library for automating the configuration of Django apps with Heroku sites, django-heroku. You need to add to your requirements.txt
:
django-heroku==0.3.1
Then, add to the end of your settings.py
:
# Configure Django App for Heroku.
import django_heroku
django_heroku.settings(locals())
Manual configuration
Firstly, you will need to turn your SECRET_KEY into an enviroment variable.
...
SECRET_KEY = os.environ.get('DJANGO_SECRET_KEY', "DEFAULT_VALUE")
...
Then you can change the default SQLite database with a backend better suited for production.
For PostgreSQL (better compatibility with Heroku), replace the DATABASES
variable content with:
from urllib.parse import urlparse
db_credentials = urlparse(os.environ.get('DATABASE_URL'))
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': db_credentials.path[1:],
'USER': db_credentials.username,
'PASSWORD': db_credentials.password,
'HOST': db_credentials.hostname,
'PORT': db_credentials.port,
}
}
Add your website on ALLOWED_HOSTS
:
...
ALLOWED_HOSTS = ['<mysite>.herokuapp.com']
...
Publishing
Once the configuration is done, you can initialize git on your project (if haven't already), commit the changes and be ready to push it to Heroku.
Remember to set DEBUG
to False
on settings.py
before sending to production!
Last updated
Was this helpful?