Web Development 701 ~ Heroku and Web Hosting
We wrapped up the web implementation in the last blog with the addition of the auction system. Now it’s time to deploy the website to a web hosting service. There are two options that are available for the deployment, my tutors remote server, or a PaaS (Platform as a Service) provider like Heroku.
I want to get experience in both so I will deploy on both, but since the dependancies I require for the website are not yet installed on the tutor’s server I will start with deploying on Heroku.
Before deployment to Heroku there are a few changes that need to be made to the repository. One of the first things we need to do is add web701.herokuapp.com to the ALLOWED_HOSTS list in the settings.py file under the web701 directory. We need to add a Procfile which is essential and “specifies the commands that are executed by the app on startup.” [source]. We also need a runtime.txt file, and a requirements.txt file. These files need to be in the root directory of the application. We also need to install the heroku-cli.
When I first tried to deploy the application I was running into the following issue.
No default language could be detected for this app.
I figured out it was because the repository was setup in the following way.
|- root dir
|- env
|- README.md
|- django app
|- ...
By changing it to the following it solved this problem.
|- django app
|- ...
I also ran into the following error.
Requested runtime (Python 3.7.3) is not available for this stack (heroku-18).
Which this problem was simply a syntax error and was solved by changing the runtime.txt file from Python 3.7.3 to python-3.7.3.
Now to create a Heroku app via heroku create <appname> --buildpack heroku/python and deploy it via git push heroku master. With that we now have a live web application available to the public. Not sure if I will continue to keep the application hosted but the url is https://web701.herokuapp.com.