Quick guide to installing an up-to date version of Python Django:
# Upgrade your local PIP:
$ python3.9 -m ensurepip --upgrade
$ python3.9 -m pip install --upgrade pip
# Make sure that you have your ~/.local/bin early in your path:
$ cat ~/.bash_profile
export PATH=$HOME/.local/bin:$PATH
$ source ~/.bash_profile
# Upgrade required dependencies
$ pip3 install setuptools --upgrade
$ pip3 install virtualenv --upgrade
# Create a directory for your Django project:
$ mkdir ~/django ; cd ~/django
# Create and activate a new virtual environment for the Django app:
~/django$ python3.9 -m virtualenv -p python3.9 venv
~/django$ source venv/bin/activate
# Install Django and start a new project:
(venv) ~/django$ pip3 install Django
(venv) ~/django$ python -c "import django;print(django.get_version())"
(venv) ~/django$ django-admin startproject djangoProject
# Change the config to allow access:
(venv) ~/django$ sed -i "s/ALLOWED_HOSTS = \[\]/ALLOWED_HOSTS = ['*']/" djangoProject/djangoProject/settings.py
# Enable mod-passenger for the Apache Vhost:
(venv) ~/django$ cat .htaccess
PassengerEnabled On
# Create a startup file for the mod-passenger application
(venv) ~/django$ cat passenger_wsgi.py
import sys, os
ApplicationDirectory = 'djangoProject'
ApplicationName = 'djangoProject'
VirtualEnvDirectory = 'venv'
VirtualEnv = os.path.join(os.getcwd(), VirtualEnvDirectory, 'bin', 'python')
if sys.executable != VirtualEnv: os.execl(VirtualEnv, VirtualEnv, *sys.argv)
sys.path.insert(0, os.path.join(os.getcwd(), ApplicationDirectory))
sys.path.insert(0, os.path.join(os.getcwd(), ApplicationDirectory, ApplicationName))
sys.path.insert(0, os.path.join(os.getcwd(), VirtualEnvDirectory, 'bin'))
os.chdir(os.path.join(os.getcwd(), ApplicationDirectory))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', ApplicationName + '.settings')
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
#Thats it! See below for how to create a subdomain to run this app
If your subdomain is called e.g. django.MYDOMAIN.COM its DocumentRoot must be set to the absolute path:/var/www/vhosts/MYDOMAIN.com/django/djangoProject
You can check the Python/Django versions matrix on this page:
https://docs.djangoproject.com/en/3.1/faq/install/