Building a Django App on Heroku

Preview:

DESCRIPTION

A quick overview on how to build a Django app on the Heroku platform

Citation preview

Building a Django App on HerokuGet your project up and running in 20 minutes or less.

What is Heroku?● Platform-as-a-Service (PaaS)● Acquired by salesforce.com in 2010

Why Heroku?● Focus on developer productivity● 100% free plan includes hosting & db● No need to think about servers● Easily scales

Why we chose Heroku● Free to start● No bandwidth/budget for devops● Flexibility to deploy elsewhere in future if

needed

PrerequisitesFamiliarity with:

● command line● git

PrerequisitesInstall:● pip

http://www.pip-installer.org● Postgres

pip install psycopg2

http://initd.org/psycopg/

PrerequisitesInstall:● Virtualenv

pip install virtualenv

Getting Started1. Sign up for a Heroku account at Heroku.com2. Install Heroku Toolbelt: https://toolbelt.heroku.com3. Log in via command line

Create a Django app locally$ mkdir mysite && cd mysite

$ virtualenv venv --distribute

$ source venv/bin/activate

$ pip install django-toolbelt

$ django-admin.py startproject mysite .

Create a ProcfileCreate a Procfile in your root project directory:

# Procfile

web: gunicorn hellodjango.wsgi

Create requirements.txt

$ pip freeze > requirements.txt

Note: If you do this out of order, you’ll need to manually create requirements.txt

Modify settings.pyimport dj_database_urlDATABASES['default'] = dj_database_url.config()

SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

ALLOWED_HOSTS = ['*']

# Static asset configurationimport osBASE_DIR = os.path.dirname(os.path.abspath(__file__))STATIC_ROOT = 'staticfiles'STATIC_URL = '/static/'

STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'),)

Modify wsgi.py

from django.core.wsgi import get_wsgi_applicationfrom dj_static import Cling

application = Cling(get_wsgi_application())

Store your app in gitFirst create a .gitignore file; add:

venv*.pycstaticfiles

Store your app in gitInitialize a new git repository

$ git init

Add the new files$ git add .

Commit your files$ git commit -m "initial commit"

Push your code to HerokuCreate a new app on Heroku$ heroku create

Deploy your code to Heroku$ git push heroku master

Start your appStart a Heroku dyno

$ heroku ps:scale web=1

Scaling dynos... done, now running web at 1:1X.

Terminology: Dynos are isolated, virtualized Unix containers, that provide the environment required to run an application.

Each Heroku app comes with 1 free

dyno.

Visit your app

$ heroku open

Visit your app

Congrats! You’ve set up a live Django-powered application via Heroku.

Recommended