Django is an open-source and free Python-based framework, following the model-template-views (MTV) architectural pattern. Whereas Heroku is a cloud platform, introduced in June 2007, and supports several programming languages like Java, Node.Js, Scala, Python, PHP, Go, and Ruby.
In this article, we will learn how to deploy a Django on Heroku. Undoubtedly, Heroku creates an ideal environment for various languages; therefore, you can host Django on Heroku and make your web application bloom.
We have inquired about the whole process from the Django developer at vteams and here is what he came up with (briefed below).
So, let’s get cracking on the knowledge!
Django Deployment to Heroku (Step by step process)
So, how to deploy the Django project on Heroku step by step? We will elucidate the whole procedure incorporated at our software development company.
Web Application Commencement
Remember that the Django project needs proper preparation before its deployment to the internet as well as the security must be double-checked. In this case, Heroku will do wonders by protecting your confidential data such as the API key.
Hence, it is crucial to divide your web development process into chunks to keep your site functional, safe, and stable.
To deploy Django on Heroku ideally, make sure you follow these steps brilliantly.
Just go to your root folder where you first ensure all the important files are residing and create a new file called Procfile. This file specifically declares the types of processes and commands to be executed by your startup or web app.
Install Django-Heroku and Gunicorn
First, it is essential to know what is Gunicorn. Gunicorn known as Green Unicorn is a Python-based WSGI (Web Server Gateway Interface) server that is used to run Python web applications.
What is an ideal way to deploy Django application? Use the Django-Heroku package. Notably, this configures the Django app to make it workable on Heroku.
You can use waitress-serve if you have problems configuring web apps on Windows.
Another step in the Django deployment is to configure your Procfile. For that, go to your Procfile and add these lines to your code of lines:
web: gunicorn <myproject>.wsgi –log-file –
For instance, if you’re using Waitress-server, you can configure the Procfile by writing these lines:
web: waitress-serve –port=$PORT <myproject>.wsgi:application
Note: replace <myproject> with the name of your project.
Next, install Whitenoise and then add it to the middleware.
Add this line on your terminal line:
pip install whitenoise
Once the Whitenoise is installed, go to the settings.py file and search for the middleware section. Next, add this line to the middleware section:
Point to be noted!
Whitenoise is a type of documentation that perfectly deals with static files and is considered a package that allows the Django apps to serve their own static files.
Create a requirements.txt file
How do I deploy a Django application? Simple and facile, keep following the tricks we used and see the results in fewer minutes.
Add on your terminal file:
pip freeze > requirements.txt
This file contains and lists all the libraries used in the project. Also, keep your requirements.txt file in the root directory of the project (as in the same folder, manage.py resides).
Irrefutably, Heroku will install all the libraries from this file during a Django deployment process.
To perfectly deploy Django on Heroku profoundly, check if, in the same root directory where the requirements.txt file and manage.py file are located, runtime.txt is also placed.
Then, write down your existing version of Python.
When it comes to solving queries like how to deploy to Heroku, it is always crucial to manage settings.
Once done with basic installation, head towards the settings.py file and make various arrangements in order to create an environment for website deployment.
- Import dj_database_url and django-heroku packages.
- Scroll down to the end and type in the line of code to activate the package Django-Heroku.
Note: The dj_database_url will return the database connection dictionary with the data specified in the URL.
Related Read: Become a Django developer in 5 minutes
Confidential information like secret keys, database credentials, important features and libraries, and other such proprietary data should be secured and protected from the malicious act of hackers and cyber attackers.
To protect the information, you need to follow the steps written below:
- Get into the root directory and create a .env file.
- Place all the files like a secret key file you want to hide in this folder .env file
- Make sure to remove all the quotation marks and spaces on these values.
- Install Python-decouple by adding the code line:
Pip install python-decouple on your terminal
- After that, import the config from decouple by returning to your settings.py file.
From decouple import config
Once you use this config value to replace the information you like to hide. Something like this should be the result:
- Next, open one more file in the root directory and name it .gitignore
- Then, open that file and type .env on it (this command tells GitHub to ignore the .env file).
- Check your server by running it to ensure that everything works smoothly yet flexibly.
Deploy Django on Heroku
Now, it’s time to check the Django deployment from GitHub in this section.
How to deploy Django to Heroku from GitHub?
Hurray! Your web application is ready for the process and GitHub is all good to host Django.
Keep in mind that GitHub is a perfect versioning tool that will display your code and help you to keep the track of it. Yes, many companies rely on this service platform for version control and website deployment.
So, the first step is to push your application to GitHub and use the tool Git (which uses code to perform different operations like pulling or pushing programs into various version control platforms).
Below is the guide to downloading and installing Git on your system.
- Sign in to GitHub
- Open the repository and give it a project name and a proper description.
- Voila! Your new repository is created.
Now, GitHub is ready to have your code.
Note: Github has the most unique yet latest commands for pushing the entire code to the new repository.
Copy-pasting the commands on the command prompt is all that you need to do. Moreover, they will ask you for the credentials (username and password) just to follow the verification process.
Create Heroku Account
Congratulations! Your GitHub repository is ready with a code and now is the right time to create a Heroku account.
How to deploy Django on Heroku? When you push code to GitHub, it allows Heroku to assess the changes made to the website.
This is why it is suggested to host Django on Heroku as it provides the most flexible environment. Once the account is created, it is important to promote a feasible environment for the website deployment process.
- Create a new app by clicking on the “new” button placed on the top right corner of the screen.
- Download the Heroku CLI and install it by following the setup guideline on your computer.
- First, type heroku-version into your command prompt and check if it is valid or not. Next, write down a small code heroku login on your command prompt
- A prompt message will appear instructing you to press a key in order to open a browser. For this, log in with your credentials.
heroku git:remote –a <name>
It will direct you to the Heroku app you have created. Replace <name> with your project name.
- Type git remote –v to check if the app is connected to Heroku.
- While you’re on the Heroku app interface, click the Open app button (if it exists).
- Next, copy the URL of your website without https:// and the forward-slash (/) appears at the last.
- Then, check your settings folder for Allowed hosts . This section will help you find the domains and servers your web apps can run from.
- Paste the copied URL to the allowed hosts and make sure you have incorporated your local host.
- Once done, go to the Heroku page and click on the setting tab.
- A link button directing to “Add Buildpack” will be shown on the screen.
- To deploy Heroku on Django, click the button and select Python as your language.
- Thus, you made new changes to the web application and it is the right time to push these modifications to GitHub before the website deployment process is started.
The Final Deployment of Django on Heroku
Since everything is ready, Heroku is ready to host Django. So, how to deploy to Heroku? Simple as said, the process is briefed below:
- On Heroku, by clicking on the Deploy tab, you can connect the GitHub repository with a new app.
- Next, authorize the connection and put the repository and repo name.
- Check all the details entered and click the Deploy button in order to commence the website deployment process.
- Once ready, visit the website and enjoy its live status.
Hopefully, from web application commencement to the final deployment of Django on Heroku, every single step will bring a lot of ease for you in accomplishing the milestone effortlessly.