MISE_A_JOUR.md 3.3 KB

🚀 Guide de Mise à Jour et Sécurisation - Blog Duhaz

✅ Ce qui a été fait

1. Sécurisation

  • ✅ Création du fichier .env pour les secrets
  • ✅ Création du fichier .env.example comme modèle
  • ✅ Mise à jour de .gitignore pour protéger les secrets
  • ✅ Modification de settings.py pour utiliser les variables d'environnement
  • ✅ Création de requirements.txt avec Django 5.1 LTS

2. Améliorations de sécurité ajoutées

  • SECRET_KEY maintenant dans .env
  • DEBUG configurable par environnement
  • ALLOWED_HOSTS configurable
  • STATIC_ROOT et MEDIA_ROOT configurés
  • Paramètres de sécurité prêts pour la production (commentés)

📋 Prochaines Étapes

Étape 1 : Installer les nouvelles dépendances

# Créer un environnement virtuel (si pas déjà fait)
python3 -m venv venv
source venv/bin/activate  # Sur Mac/Linux

# Installer les dépendances
pip install -r requirements.txt

Étape 2 : Générer une nouvelle SECRET_KEY

La SECRET_KEY actuelle est exposée dans Git. Générez-en une nouvelle :

python3 -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())"

Copiez la clé générée et remplacez-la dans votre fichier .env.

Étape 3 : Vérifier les migrations

python manage.py makemigrations
python manage.py migrate

Étape 4 : Tester le site

python manage.py runserver

Visitez http://127.0.0.1:8000/blog/ pour vérifier que tout fonctionne.


⚠️ Problèmes Potentiels de Compatibilité

1. django-trumbowyg

Vérifiez la compatibilité avec Django 5.1. Si problème :

pip install --upgrade django-trumbowyg

2. Méthodes dépréciées à corriger

Dans blog/models.py et core/models.py

Supprimer les méthodes __unicode__ (Python 2) :

# ❌ À SUPPRIMER
def __unicode__(self):
    return self.cb_titre

# ✅ Garder seulement
def __str__(self):
    return '%s' % (self.cb_titre)

3. django.utils.timezone

Si erreurs avec les dates, importer :

from django.utils import timezone

🔒 Configuration pour la Production

Quand vous déployez en production, modifiez .env :

SECRET_KEY=votre-nouvelle-cle-secrete-generee
DEBUG=False
ALLOWED_HOSTS=votre-domaine.com,www.votre-domaine.com

Et décommentez dans settings.py :

SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
SECURE_BROWSER_XSS_FILTER = True
SECURE_CONTENT_TYPE_NOSNIFF = True
X_FRAME_OPTIONS = 'DENY'

🐛 Si Problèmes

Erreur "No module named 'dotenv'"

pip install python-dotenv

Erreur avec les templates

Vérifiez que DIRS dans TEMPLATES pointe vers les bons dossiers.

Erreur 500 en production

  • Vérifiez DEBUG=False
  • Collectez les fichiers statiques : python manage.py collectstatic
  • Vérifiez les logs Django

📝 TODO - Améliorations Futures

  • Migrer vers PostgreSQL (recommandé pour production)
  • Ajouter django-debug-toolbar pour le développement
  • Configurer un serveur WSGI (Gunicorn)
  • Ajouter WhiteNoise pour les fichiers statiques
  • Optimiser les requêtes (select_related, prefetch_related)
  • Ajouter un système de cache (Redis)
  • Corriger les vulnérabilités XSS potentielles
  • Migrer vers Class-Based Views
  • Ajouter des tests unitaires