Linode is a great and old cloud hosting provider, which offers wide range of cloud services including VMs, managed databases, object storage and more.
In this article you will see how to deploy your Django application on Linode VM.
If you are looking for tutorial for another cloud provider checkout out one of these:
- Deploy Django on Hetzner Cloud
- Deploy Django to Digital Ocean Droplet
- Deploy Django to AWS Lightsail
- Deploy Django to AWS EC2
- Deploy Django on Azure
- Deploy Django to Google Cloud Platform
Table of contents
Requirements
- An application to deploy
- Appliku Account
- Linode Account
Django Application
In order to deploy an application you need to have it pushed into a git repository (GitHub, GitLab or any other git provider).
Here are a few requirements and recommendations:
requirements.txt
file in the root of the repositoryProcfile
in the root of the repository with commands needed to run your project. Check this example- Application should respect environment variables, for example
DATABASE_URL
for database credentials. Additionally,DJANGO_ALLOWED_HOSTS
for the list of domains for your app,DJANGO_SECRET_KEY
,REDIS_URL
for redis credentials. - We strongly recommend to turn off the DEBUG mode for publicly accessible environment.
We have a full Django with Docker and Postgres Tutorial if you want to learn more, or you can check our SpeedPy.com SaaS boilerplate
Appliku Account
If you don't already have an Appliku Account create it by going here: https://app.appliku.com/
Click on "Add a server"
Pick a Custom Server:
Select this key, we will need it at server creation step.
Linode Account
If you don't already have a Linode account go here to sign up: Linode.com
Log in your account and go to the list of linodes: https://cloud.linode.com/linodes
Click on "Create Linode"
Select a Distribution:
Ubuntu 20.04 LTS
Select Region: Pick the closest to you or your target audience
Linode Plan: In this tutorial we will use the smallest available plan with 1 GB of RAM.
Scroll down and click "Add An SSH Key"
Paste the key you copied from the Appliku Dashboard earlier and give it some name.
Click "Add Key"
Select the key
Set a root password for server.
Scroll down and check the box that you accept terms of service and policies and click "Create Linode"
You will be taken to the server detail page, you can see that server is being provisioned.
When the status is "Running" it is time to add the server to Appliku.
Copy the IP address and switch back to Appliku Dashbord and paste it into IP field
Click on "Check credentials and add server"
You will be taken to the server detail page. Wait for Setup Status to say "Finished". If it becomes "Failed" go to the Setup Logs tab to see for errors.
Server setup is complete and stats are displayed:
Adding an application
Click on the "Applications" menu link
You will get to the Git Provider selection.
Creating application from GitHub
Select the "Setup Credentials" for GitHub.
You need to get a personal token from GitHub.
Go to this link to create a token: https://github.com/settings/tokens
Click on Generate new token -> Generate new token(Classic) Fill in the note, select expiration date, check the "repo" checkbox and "user:email"
And click "Generate token".
Copy the token from the next page.
Go back to Appliku dashboard and paste the GitHub Token, and click Test Credentials and Save
Status must change to "Active".
Click on the logo in top left corner to get back to your team and go to Applications again and create an app, select GitHub.
Fill the form with the app name, select the repository with your application, branch and select the server, click on "Create Application".
You will see your app has been created, but not yet deployed.
Creating application from GitLab
Alternatively if you use GitLab you should add credentials for GitLab and create an app from GitLab.
Go to Applications menu link, Click "Add Application" and Setup credentials for GitLab.
You need to create a Personal Access Token here: https://gitlab.com/-/profile/personal_access_tokens
Give the key a name, set or clear expiration date, select "api" checkbox and click "Create Personal Access token"
Copy the token and paste it in Appliku dashboard.
After you click "Test Credentials and Save" the Status should turn green and say "Active".
Click on the logo to go back to your team, go to Applications, Add Application and select GitLab
Give your application a name, pick repository and the branch, select the server and click "Create Application"
Setup the app
Databases
If your application needs a database, which Django apps need most of the time, you can click on the "Manage" in databases block and "Create Database"
Select a database type you need and your server to deploy the DB to, click "Create database"
Your database will start deploying, wait for the deployment status to become "deployed".
Go back to your app
You can see your database is in the list.
Environment variables and build settings
Click on the "Settings" link next to the application name.
Go to the "Environment Variables" tab
You can see that the DATABASE_URL
is already added automatically from the database you created.
If you have a .env
file you can use "Import from .env" button to paste variables.
Or click on "Add" button and add variables one by one.
Usually for Django app we need to add DJANGO_ALLOWED_HOSTS
and DJANGO_SECRET_KEY
.
Appliku provides a default host name for your application which is YOUR_APP_NAME+ '.applikuapp.com'
After you finished adding your variables click on "Save and Deploy"
You will see that the deployment started.
Go back to the application overview.
The "Deploy Now" button is grey because deployment is in progress and in the "Latest deployment" Block you can see the currently running deployment.
Click on "Deployment #1"
You can see the deployment log. Scroll down to see the most recent output.
After it finishes and reports the "exit_code: 0", which is success go back to your application overview
Click on "View Application"
It will open your application in a new window!