Heroku is a fantastic platform that lets you deploy a Flask app online for Free.
This is a fantastic option to test dev environments, to make SEO tests in Google Search Console or to make a python a public app to showcase your work without paying for hosting and for a domain name.
If you know nothing about Python, make sure that you check out my ultimate guide on Python SEO.
Before you can start, you need to do three things:
- Install Git
- Install Python
2. Install Heroku
If you are using Mac, you can download homebrew from your Terminal.
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Then run this command to install Heroku.
$ brew tap heroku/brew && brew install heroku
To install Heroku on Windows, download the Heroku installer for Windows.
3. Getting Started With Heroku
Start with an empty project in your preferred text editor. In this tutorial, I am using VSCode.
Create a New Working Directory
$ mkdir <your-app-name> $ cd <your-app-name>
Create Virtual Environment
It is recommended to create a virtual environment so that there is no conflict with Heroku during the deploy.
If you have installed Python with Anaconda, you can create your empty environment this way.
$ conda create --name simple-heroku python=3.6
Activate the environment.
$ conda activate simple-heroku
or you can use venv.
$ virtualenv venv $ . venv/bin/activate
Install Requests, Flask and Gunicorn
To run the app, we need to install the
Flask Python Framework with which we will build our app and
Gunicorn to be our Python WSGI HTTP Server.
$ pip install requests[security] flask gunicorn
4. Create The Flask App
Now lets create our Flask App.
Create App Folder
$ mkdir app $ cd app
Write Your Flask app
Inside the app folder, create a
$ touch main.py
To open with vscode.
$ code main.py
Add the basic building blocks of the app. This app will simply print a H1.
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return '<h1>I want to Deploy Flask to Heroku</h1>'
Create Script to Run the App
Move to the parent directory.
$ cd ../
Create a file named
from app.main import app if __name__ == "__main__": app.run()
Run Flask App
To verify if the app works, try running the app first.
$ python run.py
In your browser, go to the IP given and see if the app works.
CTRL + C.
5. Make Required Files to Deploy to Heroku
Now, let’s freeze the environment and add it to the requirements.txt so that the required packages are installed when deploying the app.
$ pip freeze > requirements.txt
We need to create a Procfile that contains the commands that Heroku will need to run.
web: gunicorn <app_name>:app
To create the Procfile to run the run.py app:
$ echo web: gunicorn run:app >> Procfile
6. Deploy Your App to Heroku
$ heroku login
Create Heroku App
$ heroku create <app-name>
or Go to Heroku Dashboard
Add Heroku App to Remote
$ git init $ heroku git:remote -a <heroku-app-name> $ git remote -v
Deploy the Flask App to Heroku
$ git add . $ git commit -m "Init deploy"
$ git push heroku master
All done, the Flask app should be live.
6. Kill The App
If you want to deactivate, or destroy your Heroku app. Here are the commands.
$ heroku ps:scale web=0
heroku ps:scale web=1
$ heroku apps:destroy <heroku-app-name>
Bravo my Python friends, you now know how to deploy a Flask app on Heroku for free.