In this tutorial, I am going to walk you through how to deploy Python Django web app on a shared cPanel web hosting plan. I am using Namecheap shared hosting plan but I would recommend using inMotion which support latest Python 3 and Django version. If you need full root access the server, which you do not get with shared hosting plans, go with VPS hosting provided below.
Login to your cPanel Account
Locate and Launch “Setup Python App”
Under SOFTWARE section you’ll find ‘Setup Python App’. To launch it just click once.
Create New Python Application
Now, locate the “Create Application” button and click it
Create Python Application
Here you can select Python version, domain or sub domain name, and write your app directory name for your application, I have chosen Python 3.6.8, selected my sub domain name and given app root directory name, which can be found from ‘File Manager” page.
Once, you are done with Python version, Application root, and Application URL, click create on the right top. “Create” can be anywhere on this page, on mine it’s on the right top.
View Python App in the Browser
Activate Python Virtual Environment
You just created your first Python Application in cPanel. Now, let’s activate the python virtual environment.
Copy the underlined terminal command
Once you have copied this command, go back to cPanel home page and look up for “TERMINAL” and launch it.
Launch cPanel Terminal
Paste the Terminal Command here
Install Django on cPanel
To upgrade pip and install Django in this Python Environment I just ran following commands.
pip install --upgrade pip
pip install django==1.9.13
Remember you can install latest version of Django with ==1.9.13 flag, but this is what has worked on my cPanel without any error or issue.
When install and run the latest version of Django on my cPanel it does not find the latest version of SQLite on the server. And on the shared hosting plan I cannot upgrade it.
Create Django Project
Let’s create Django project from cPanel Terminal. Type the following command
django-admin startproject project_name .
Don’t forget the period sign at the end
Locate Python App Root Directory
Edit/update /passenger_wsgi.py file with the following code
from project_name.wsgi import application
Save /passenger_wsgi.py file and close it
Edit/Update /project_name/settings.py file
Under settings.py update the ALLOWED_HOST field first
ALLOWED_HOSTS = ['best.tubemint.com', 'www.best.tubemint.com']
Under settings.py update static files section at very bottom of the page
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATICFILES_DIRS = [BASE_DIR+"/assets",]
STATIC_ROOT = '/home/eatawvtq/public_html/static'
MEDIA_ROOT = '/home/eatawvtq/public_html/media'
Now, you can save and close this settings.py file.
Create Static Files’ Folders in the respective directories
- Create /assets/ folder in the project root directory.
- Create /static/ and /media/ folders in /public_html/ directory
Run the following command to sync the static files
python manage.py collectstatic
Restart the python server
Navigate to your domain name with browser
Navigate to your updated domain name in a new browser tab to check if Django App is loading properly.
Django 3 Course
Learn Django 3 by building project. If you want to learn Django 3 and deploy your application like pros. Sign up for this Django 3 course at affordable price.
Best Python Django App Web Hosting Providers
Here is the list of best Python Django web hosting providers that you may use to host your Python applications as per your requirement.
Shared Hosting for Python Django App
Shared hosting providers offer Python 2 and Python 3 support but some of them would neither guarantee of performance nor guarantee support of latest features of Python or Python framework like Django. You would also have a limitation of using MySQL database, since you can hot install any software of your choice on shared web hosting servers. However, shared hosting is good to test your Python and Django applications.
Here is the list of most reliable shared web hosting providers for Python Apps.
Dedicated & Cloud Hosting for Python django App
Dedicated and cloud web hosting will give you more flexibility to install latest and stable versions of python and Python frameworks like Django and flask. Dedicated and cloud web hosting will also let you install the database server of your choice.
Most importantly you will be able to optimize and tune your applications service for speed and performance.
Here is a list of best Python Cloud and Dedicated Web Hosting providers.
Deploy Django to Heroku
If you would like to deploy your Django app to Heroku server from your system then you need to follow the latest Heroku guide. Remember Heroku does not support all the database servers.
Deploy Django from Git repo
To automatically deploy your Django app from your Git repo you need to first set up and deploy your Django app manually and then use utilize Git actions to keep updating your Django app on the server whenever you update your Django app git repo.