How to deploy your website to a custom domainSanket GuptaBlockedUnblockFollowFollowingJan 20This blog documents the steps needed to deploy a website written in Python with Flask framework to a custom domain using Heroku and NameCheap.
People also use other frameworks like Django for this purpose, but my favorite is Flask as it is easy to get started with.
Having your website can help you stand outA small Flask web-site can be created by creating a new repo, by creating a Python file such as this:# app.
py from flask import Flaskapp = Flask(__name__)@app.
route("/")def hello(): return "Hello World!"if __name__ == "__main__": app.
run(port=5000)A typical Flask app has folders static for all the CSS and JS files as well as images etc.
and a templates folder for HTML files.
I will not go into much detail here, but fantastic information on this can be found in tutorials by Miguel Grinberg.
When the above file is run python app.
py it opens the website locally with “Hello World!” written in HTML.
How do we deploy this website to a custom domain for everyone to see?1.
Create a Heroku AccountGo to Heroku website and sign up for an account.
Heroku will allow us to deploy the website to a domain ending with herokuapp.
We will use this website and deploy to custom domain.
We could have used Amazon Web Services to deploy the website, but I find it to be much more complex than using a solution like Heroku.
AWS is infrastructure-as-a-service (IaaS) and Heroku is platform-as-a-service (PaaS).
Because of this we do not need to worry about exact infrastructure details with Heroku! That’s what makes it simpler to use.
Now, go to this link and download heroku for the command line.
If you have homebrew on your machine, you can use brew install heroku/brew/heroku to install it on your machine.
Next run heroku login to enter your Heroku credentials.
Heroku is used to deploy our local website to cloud2.
Deploy your app to Herokua) Make a Procfile:To deploy your app to Heroku, first create a Procfile and save it in the same folder as app.
Note that the Procfile does not have any extension like txt etc.
This Procfile will have the content web: gunicorn app:app This statement will allow Heroku to run gunicorn as the web server for this app.
Make sure that you have gunicorn installed in your virtual environment.
b) Make requirements.
txt:Also, use pip freeze > requirements.
txt to write all the requirements of this project into a file.
Heroku will use this to install all the necessary packages in the cloud to run your app.
c) [Optional] Make runtime.
txt:If you want to specify which Python version should be used in the cloud to run your app by Heroku, just mention it in this file as python-3.
d) Deploy to Heroku:Run heroku create <app-name>where <app-name> is the name of your liking.
If your app name is calm-river then Heroku will deploy your website to calm-river.
Make sure git is installed on your command line.
Run git init to initialize your current folder as a git repository.
Next, run git add .
and thengit commit -m "first commit" to commit all your files to git .
Finally run git push heroku master to deploy your app to Heroku~ If all things go well, you can access your website at <app-name>.
Link to a custom domain on Heroku:Next, we’ll need to buy a custom domain from NameCheap or GoDaddy.
Say you bought the domain, example.
comNext, run heroku domains:add www.
com to add this custom domain to your Heroku app.
It will give you a DNS target type and DNS target name.
This target type should be CNAME .
We need to link this CNAME record to the settings console of your domain on NameCheap or GoDaddy.
Add CNAME record to your custom domain:Go to Namecheap settings console, and go to Advanced DNS .
Add CNAME record to Host targets with Type being CNAME and Host being www and Value being the DNS target name that you received when you added the domains to Heroku.
Add URL Redirect record to your custom domain:Having added the CNAME record, add URL Redirect record with Host being @ and Value being http://www.
com with Unmasked setting.
Allow upto 30 minutes for these settings to propagate, and your website should be live on your custom domain!.Hope these steps were useful in your quest to share your work with the world.
More details can be found on Heroku website on these steps.
Hope to see your website around!.