Deploying Django App on Heroku
Tags: Heroku, Django, Herokuapp, Heroku Cli, Free Django Hosting

Made an awesome app with Django!!! Excited to show your awesome work to the world. Let’s do it together 😉.

Design By Satyam Srivastava

What is Heroku ? Heroku is a container-based cloud Platform as a Service (PaaS). It is used to deploy, manage, and scale modern apps.

It is basically a cloud application platform , that supports several programming languages, and allows developers to host there app globally . It relies on AWS and is trusted by thousands of companies.

This article will explain you all the necessary steps to push in production a Django app, using Heroku for hosting .

So, let’s begin…

First, you need to create an create an account on HEROKU. You can create your free account here : HEROKU .

Installing Required Tools…

In this article we will be deploying our django app using Heroku CLI(Command Line Interface), as it makes it easy to create and manage our Heroku apps directly from the terminal.

You can download Heroku CLI from here , as Heroku CLI requires GIT , which can be downloaded from here .

You can check whether your Heroku CLI and GIT are properly installed , by running the following commands in your shell or cmd :

For HEROKU CLI :

heroku login

For GIT :

git --version

Open your cmd or shell whatever you use, and navigate to your project folder . I recommend you to make a copy of your project folders and delete all the unnecessary files or folders.

Now lets first create a virtual environment just outside your app folder , you can do it by installing pipenv

pip install pipenv

Its basically something that will isolate your project. So anything that you will be installing in your computer will not effect your project.

Now activate your virutal environment by running the following commands,

for Windows run :

virtualenv .

.\Scripts\activate

for Shell run:

virtualenv env source env/bin/activate

Now navigate to the folder where your ‘manage.py’ file exists . And try running your Django app using *python manage.py runserver* command. It will probably wont work and give you some errors and mainly the Django error 😳.

Which means you need to install the modules with exact the same version that you have installed for making your project. Installing same version is necessary, as different versions may give errors.

How to install the same modules versions?

Open your folder in your ide and in ide terminal write

pip freeze

This command will help you know what all libraries or modules you had in you project folder along with their versions, copy and install all the necessary modules that you are using in your project, in you cmd or shell using ‘PIP’ command.

After successfully installing all your modules, try running your django project using ‘runserver’ command, And this time it should not throw you an error. Close your running server from cmd using “CTRL+C”.

Adding necessary files…

runtime.txt

Make a new runtime text-file in your manage.py folder and write the python version you are using .For example

python-3.9.1

Procfile

Make a new file named ‘Procfile’without any extension. So, it is recommended to make it available in your manage.py folder using your ide. It is a file which is required by HEROKU for deploying the apps. Procfile is a mechanism for declaring what commands are run by your application’s dynos on the Heroku platform.

What is gunicorn? Gunicorn (Green Unicorn) is a pure-Python HTTP server for WSGI applications. It allows you to run any Python application concurrently by running multiple Python processes within a single dyno. It provides a perfect balance of performance, flexibility, and configuration simplicity.

In simple word , it’s basically a WSGI(Web Server Gateway Interface ) that is used for running the Python web application.

Installing gunicorn in your virtual environment:

pip install gunicorn

Write the following commands inside your procfile

web: gunicorn your_app_name.wsgi --log-file -

Install django-heroku The django-heroku package automatically configures your Django application to work on Heroku.

It basically make the work of publishing django project very easy.

pip install django-heroku

Now, add some changes in you ‘settings.py’ file, at the top add

import django_heroku

simultaneously, at the bottom add

django_heroku.settings(locals())

If you want to add allowed hosts to your django app ,you can add but dont forget to make

DEBUG=False

requirements.txt

Now write freeze command in your cmd or shell, and it will give you a list of packages that are required on the HEROKU server. So to make it available on the server write,

pip freeze > requirements.txt

This command will basically make a text-file with all the required packages. It contains all the necessary files that is needed by your application to be installed on the server. If you add any new packages for your app in future you need to add them in this file, either manually typing into it or by running the above given command again.

Creating Heroku app

You can create your app either from Heroku-dashboard or by using your CLI . Here we will be using our cmd or shell .

Hope you are still logged in your heroku dashbord through cmd or shell ,if not use “heroku login” command to get logged.

heroku create your_app_name

this command will create an heroku app for you. Make sure your app name is unique.

Adding files on server using git.

Run the following commands on your cmd or shell,

git init

git status

git add --all

git commit -m “anything of your choice"

Creating a HEROKU remote master:

heroku git:remote -a your_app_name

pushing to heroku master

git push heroku master

Setting up heroku admin panel

Go to admin panel

your_app_name.herokuapp.com\admin

try logging in, and it will probably not work 😶 .

Let’s resolve it🤟

heroku run bash python manage.py migrate python manage.py createsuperuser

Type in the details asked, and your superuser will be created. And this will make your admin panel available to you.