🐍 Installation de Python

sudo apt install python3-pip python3-dev libpq-dev curl

Environnement virtuel

sudo -H pip3 install --upgrade pip
sudo -H pip3 install virtualenv
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.10-venv

mkdir ~/my_website
cd ~/my_website

python3.10 -m venv my_venv
source my_venv/bin/activate
python3.10 -m pip install --upgrade pip

💎 Installation de Django

pip install django gunicorn psycopg2-binary

Créer un projet démo pour Django

django-admin startproject my_app ~/my_app

On modifie les hÎtes acceptés par Django settings

import os
ALLOWED_HOSTS = ['your_server_domain_or_IP', 'second_domain_or_IP', . . ., 'localhost']

On lie la base de donnĂ©es (attention il ne faut pas mettre ces donnĂ©es en clair, l’idĂ©al est de tout passer en variables d’environnement), mais ici il s’agit juste d’une dĂ©monstration de principe

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'my_app',
        'USER': 'remi',
        'PASSWORD': 'XXXXXXXXXXX',
        'HOST': 'localhost',
        'PORT': '',
    }
}

Configuration du répertoire static, il faudra penser à configurer nginx pour directement distribuer ces fichiers

STATIC_ROOT = os.path.join(BASE_DIR, 'static/')

Initialisation habituelle de Django

python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py collectstatic

On ouvre le port correspondant dans le pare-feu

sudo ufw allow 8000
python manage.py runserver 0.0.0.0:8000

🩄 Configuration de Gunicorn

cd ~/my_app
gunicorn --bind 0.0.0.0:8000 my_app.wsgi