I wanted to make sure that next time when I deploy something on Heroku for free, I should not forget anything. I will be using ubuntu and Heroku CLI mostly.
Following files are required by Heroku in the root directory:
- requirements.txt
- Procfile
- runtime.txt
Description and contents of these files are given at the end. Kindly check their details before starting if you are unfamiliar.
Here are the steps for deployment.
1. Create account on Heroku and download toolbelt from:https://blog.heroku.com/the_heroku_toolbelt
Login to Heroku using the command:
heroku login
2. Create the app by using:
heroku create awesome-app-name
Replace awesome-app-name with your app name. If the name is already taken then use another name. Now create database on heroku by using following link from the same blog:
Create and push PostgresSQL database to Heroku
3. Get the database name and URL by using the command:
heroku config --app awesome-app-name
4. Put the URL in your config file or where are have provided the database URL.
5. Get going with the git. Create a .gitignore file in the root directory.
Initialize the git repository by command:
Add all to git by command:
Make a commit using the command:
- git commit -m 'Initial commit'
Now push everything to heroku:
Check if we are connected to heroku app by command:
heroku info
If it return no app specified then run:
heroku git:reomte --app app-name
app-name should be replaced by the name of out app on heroku.
If it warns - did you mean git:remote then press y and enter.
Now push the thing to heroku by using the command.
git push heroku master
Now sit back and wait for it to push and install all the requirements on heroku.
requirements.txt has all the packages that are used in the project. This file can be created and populated by the following command.
pip freeze > requirements.txt
Procfile tells Heroku how to run the app. Here are the contents of a simple Procfile.
web: gunicorn run:app
It means there is a run.py file which is running the app. If Procfile has
gunicorn then it has to be stated in the requirements.txt. If unsure about
gunicorn version, then simply install gunicorn by:
pip install gunicorn
After installation you can see the version e.g. gunicorn-20.0.4 and add it
requirements.txt as gunicorn==20.0.4 or generate requirements file
again.
runtime.txt states the python version we are going to use. Please remember to check the current supported version on Heroku by visiting:
https://devcenter.heroku.com/articles/python-support#supported-runtimes