Contact salesFree trial
Blog

Django en marche

DjangoCLIconfigurationPython
Partager
Cet article est également disponible en Anglais.

Vous souhaitez démarrer avec Upsun et Python? Le CLI d'Upsun contient une commande appelée project:init conçue pour vous permettre de démarrer sur Upsun avec un certain nombre de frameworks - y comprisDjango-aussi rapidementquepossible.

Mise en place

Commençons par une base de code Django simple, dans ce cas en utilisant le populaire utilitaire de création de templates Python cookiecutter:

cookiecutter https://github.com/cookiecutter/cookiecutter-django

Le CLI de cookiecutter vous demandera de répondre à une série de questions sur le courrier électronique, les outils de CI et l'IDE. Répondez selon vos préférences, mais assurez-vous de :

  • Sélectionner la dernière version de PostgreSQL pour votre base de données
  • Sélectionner "Other SMTP" pour le service de messagerie
  • Inclure le Django Rest Framework ("use drf")
  • Choisir "Webpack" pour votre pipeline frontal
  • Inclure "Whitenoise"
  • Utiliser "Celery"

Après avoir répondu aux invites, vous aurez un nouveau projet squelette dans le répertoire que vous avez choisi comme nom (dans les exemples ci-dessous, new_project) :

. ├── README.md ├── bin ├── compose ├── config | ├── __init__.py | ├── api_router.py | ├── celery_app.py | ├── settings | ├── __init__.py | ├── base.py | ├── local.py | | ├── production.py | └── test.py | ├── urls.py └── wsgi.py ├── docs ├── locale ├── manage.py ├── new_project | ├── __init__.py | ├── conftest.py | ├── contrib | ├── static | ├── templates | ├── users | └── utils ├── package.json ├── requirements ├── requirements.txt ├── setup.cfg ├── tests └── webpack

Avec le projet en place, nous pouvons alors générer une première ébauche de notre configuration Upsun en utilisant le CLI:

cd nouveau_projet && upsun project:init

Suivez les instructions pour inclure la configuration pour PostgreSQL et Redis. Cette commande détectera automatiquement le projet Django en se basant sur la présence d'un fichier manage.py, et générera deux éléments de configuration : un fichier d'environnement et un fichier YAML de configuration primaire.

Le fichier .environment, situé à la racine du projet qui sera créé, définit les variables d'environnement dont le projet cookiecutter a besoin. Vous pouvez inspecter ce fichier vous-même, mais quelques éléments importants qui deviennent disponibles incluent les paramètres généraux du projet Django :

# .environment export DJANGO_SETTINGS_MODULE=config.settings.production export DJANGO_SECRET_KEY="$PLATFORM_PROJECT_ENTROPY" export DJANGO_ALLOWED_HOSTS=".platformsh.site"

Cette section ajoute les hôtes autorisés de Django pour inclure toutes les URL générées pour les environnements de prévisualisation Upsun, pour mettre à jour la clé secrète de Django afin qu'elle corresponde au hachage unique du projet, et pour tirer parti des paramètres de production (dans ce cas) dans tous les environnements Upsun.

Des informations d'identification supplémentaires sont développées à partir des variables d'environnement intégrées pour établir des connexions avec les services gérés fournis par Upsun :

# .environment # Définir les variables d'environnement de la base de données export DB_HOST="$POSTGRESQL_HOST" export DB_PORT="$POSTGRESQL_PORT" export DB_PATH="$POSTGRESQL_PATH" export DB_USERNAME="$POSTGRESQL_USERNAME" export DB_PASSWORD="$POSTGRESQL_PASSWORD" export DB_SCHEME="$POSTGRESQL_SCHEME" export DATABASE_URL="${DB_SCHEME} ://${DB_USERNAME}:${DB_PASSWORD}@${DB_HOST} :${DB_PORT}/${DB_PATH}" # Définir les variables d'environnement du cache export CACHE_HOST="$REDIS_HOST" export CACHE_PORT="$REDIS_PORT" export CACHE_SCHEME="$REDIS_SCHEME" export CACHE_URL="${CACHE_SCHEME} ://${CACHE_HOST}:${CACHE_PORT}" # Définir les variables d'environnement Redis export REDIS_URL="$CACHE_URL "# Celery export CELERY_BROKER_URL="$CACHE_URL "# Général

Un fichier .upsun/config.yaml est également ajouté pour configurer la construction, le déploiement et les services disponibles pour le projet. Il inclut la configuration des services que vous avez sélectionnés via les invites :

# .upsun/config.yaml services : postgresql : type : postgresql:15 redis : type : redis:7.0

La configuration de l'application est également ajoutée. Elle définit comment Django est construit et déployé via pip, comment l'accès est accordé aux services ci-dessus via des relations, et comment faire tourner le serveur avec Gunicorn :

# .upsun/config.yaml applications : new_project : type : "python:3.11" hooks : build : | set -eux pip install --upgrade pip install -r requirements.txt npm install npm run build deploy : | set -eux python manage.py collectstatic --noinput python manage.py migrate web : commands : start : "gunicorn -b unix:$SOCKET config.wsgi" upstream : socket_family : unix locations : "/" : "passthru" : true "/static" : "allow" : true "expires" : "1h" "root" : "static" montages : "/staticfiles" : "source" : "local" "source_path" : "static_assets" relations : postgresql : "postgresql:postgresql" redis : "redis:redis"

Avec ces deux éléments de configuration, nous pouvons créer un nouveau projet et déployer Django sur Upsun :

$ git add . && git commit -m "Prepare for Upsun !" $ upsun project:create $ upsun push

Avec cet environnement de production déployé, nous pouvons maintenant ajuster les ressources fournies à cet environnement avec la commande CLI upsun resources:set.

Prochaines étapes

Vous avez peut-être remarqué que le projet cookiecutter attendait des informations d'identification pour configurer la connexion à Redis afin d'exécuter Celery pour gérer les tâches de l'application. Nous avons inclus une variable d'environnement pour la connexion, mais nous n'avons pas spécifié comment exécuter ce service.

Nous pouvons maintenant créer un nouvel environnement de prévisualisation qui peut correspondre à la production en ce qui concerne ses images de construction, ses conteneurs, ses données et ses ressources autant que nous le souhaitons.

upsun branch try-celery --type staging

À partir de cet environnement, nous pouvons à nouveau effectuer des livraisons et des poussées, avec quelques travailleurs Celery définis :

# .upsun/config.yaml applications : new_project : ... workers : celery_worker : commands : start : "celery -A config.celery_app worker" celery_beat : commandes : start : "celery -A config.celery_app beat"

Testez la connexion et les performances des workers dans l'environnement isolé, puis, lorsque vous êtes satisfait, passez les nouveaux workers en production :

upsun merge try-celery

Et juste comme ça, votre prochain projet Django est opérationnel et prêt à fonctionner avec le PaaS Django d'Upsun !

Liens utiles

Regarder cette vidéo

Votre meilleur travail
est à l'horizon

Essai gratuit
Discord
© 2025 Platform.sh. All rights reserved.