This project is a simple skeleton to get you started with Django and Heroku. It currently uses the stable release of Django 1.5. The steps below should get you up and running quickly.
To get started, first install the Heroku Toolbelt. This will provide access to the necessary command-line tools.
Prepare the virtualenv you'll be using with the following commands:
virtualenv venv --distribute source venv/bin/activate pip install -r requirements.txt
Foreman uses this file to set environment variables when running commands.
Create a new PostgreSQL database and set the access information.
Issue the following commands to create the database and apply any migrations (this uses South).
foreman run python manage.py syncdb foreman run python manage.py migrate
You're now all set for local development, to start the development server, simply run
foreman run python manage.py runserver
You can then access the local development server at
The project is already set up for easy deployment with Heroku by clicking the button above. Note that you will be warned if your account will be charged for the addons installed. While I make no guarantees, I have attempted to select only free addons which leave room to upgrade. You are still responsible for verifying any fees associated with any addons which will be installed.
For the first deploy, and each new deploy, simply run
git push heroku master.
Initially, and when the schema changes, run
heroku run python manage.py syncdb heroku run python manage.py migrate
You can view your new deployment in your browser via
Static file serving can be modified to use Amazon S3.
Create a bucket on S3 and add the configuration to your Heroku installation.
heroku config:add AWS_ACCESS_KEY_ID="<AWS access key>" heroku config:add AWS_SECRET_ACCESS_KEY="<AWS secret>" heroku config:add AWS_STORAGE_BUCKET_NAME="<bucket name>"
If using S3, you will find
collectstatic takes a long time to run on every deploy.
To disable running automatically, simply set
You can then manually run
heroku run python manage.py collectstatic --noinput
To add a new dependency to your project, simply install via
pip install after activating the virtualenv.
To track newly installed packages, run
pip freeze -l > requirements.txt to update the requirements file.
Note that you should manually remove
distribute if they appear in this file as this can cause slug compilation to fail.
By default, no workers will be running. To start one, run the following command. Note that you WILL be billed by Heroku for running this additional dyno.
heroku ps:scale celery=1