How to Push a Django App to Heroku
Heroku is one of the best places to launch your Django app once it is ready for production. Most of the heavy lifting is done for you, and aside from a few configurations, there is little you need to do on the hosting side of things. While there are other places that can meet your hosting needs, we will leave it up to you to research other methods should another service be required to meet your needs.
Heroku has a free tier that will let you launch your website at no cost. You can opt into their hobby or professional tiers which will let you allocate more resources (dyno’s as they are called by Heroku) that will allow your website to handle more traffic or backend service needs.
Before getting into the configurations, create a Heroku account. Also, if you do not have a github account, create one as well since both are necessary to launch your app. Once both accounts have been created, get ready to launch your app in the cloud.
Add Project to git
Configure global settings for github:
git config --global user.name "First Last" git config --global user.email "firstname.lastname@example.org" git config --global push.default matching git config --global alias.co checkout
Initialize the Repository:
Save your Django project to git:
git add . git commit -am 'initial commit'
Configure SSH, and start Repository
New SSH Key
mkdir ~/.ssh cd /.ssh ssh-keygen -t rsa > Enter file in which to save: > Password: > Password (again): ls // see files in the directory cat id_rsa.pub
...or push an existing repository from the command line git remote add origin https://github.com/username/test.git git branch -M master git push -u origin master
Save new files and changes to the repository:
git add . git commit -am 'tag' git push
Heroku.com Account Configuration:
Install the Heroku Toolbelt HERE if you are a Windows user.
Mac OS Command with Homebrew:
brew tap heroku/brew && brew install heroku
Install Homebrew on Mac HERE if you haven’t done so already.
Django App Changes for Heroku Adaptation
Python dependencies that are required for hosting on Heroku:
pip install gunicorn pip install django_heroku pip install python-decouple pip install dj_database_url pip freeze > requirements.txt touch Procfile
Importance of the requirments.txt file
This file will list every package you have installed and the specific version. This allows Heroku to create an environment for your app with everything you specifically need. Although not done by default, you can also specify the exact version of python3 you would like to use.
Configure the Procfile:
Update settings.py in your Django Project
# Add to the top of the file import django_heroku import dj_database_url from decouple import config MIDDLEWARE = [ .... 'whitenoise.middleware.WhiteNoiseMiddleware', ] STATIC# STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage' # at the very bottom of the file insert django_heroku.settings(locals())
Push Django App to Heroku:
Before moving forward, ensure all changes are pushed to your git repository.
heroku login heroku keys:add chose file: y heroku create https://mighty-thicket-244343.herokuapp.com/ heroku rename newappname https://newappname.herokuapp.com/
Moment of truth….
git push heroku master or git push heroku main:main
Note: By default, git will create the main branch. You can change this to master or you can push another branch by calling the name in the command as shown above (main:main)
rename git branch with -mv flag:
git branch -mv origin master
Official Heroku Documentation for Python and Django apps can be found here: