Contact salesFree trial
Blog

Up(sun) and running mit Django

DjangoCLIKonfigurationPython
Share

Möchten Sie mit Upsun und Pythonloslegen ? Die Upsun-Befehlszeilenschnittstelle enthält einen Befehl namens project:init, mit dem Sie so schnell wie möglich mit Upsun und einer Reihe von Frameworks -einschließlich Django - beginnen können .

Einrichten

Beginnen wir mit einer einfachen Django-Codebasis, in diesem Fall unter Verwendung des beliebten Python-Templating-Dienstprogramms cookiecutter:

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

Die cookiecutter CLI wird Sie auffordern, eine Reihe von Fragen zu E-Mail, CI-Tools und IDE zu beantworten. Beantworten Sie diese entsprechend Ihrer Präferenz, aber achten Sie darauf:

  • Wählen Sie die neueste Version von PostgreSQL für Ihre Datenbank
  • Wählen Sie "Other SMTP" für den E-Mail-Dienst
  • Binden Sie das Django Rest Framework ein ("use drf")
  • Wählen Sie "Webpack" für Ihre Frontend-Pipeline
  • Whitenoise" einbinden
  • Verwenden Sie "Celery"

Nach Beendigung der Eingabeaufforderungen haben Sie ein neues Skelettprojekt in dem Verzeichnis, das Sie als Namen angegeben haben (in den Beispielen unten: 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

Nachdem das Projekt eingerichtet ist, können wir einen ersten Entwurf unserer Upsun-Konfiguration mit Hilfe der CLI erstellen:

cd new_project && upsun project:init

Folgen Sie den Aufforderungen, um die Konfiguration für PostgreSQL und Redis einzuschließen. Dieser Befehl erkennt automatisch das Django-Projekt anhand des Vorhandenseins einer manage.py-Datei und generiert zwei Teile der Konfiguration: eine Umgebungsdatei und eine YAML-Datei für die Primärkonfiguration.

Die .environment-Datei im Stammverzeichnis des zu erstellenden Projekts setzt Umgebungsvariablen, die das Cookiecutter-Projekt benötigt. Sie können diese Datei selbst inspizieren, aber ein paar wichtige Teile, die verfügbar werden, beinhalten allgemeine Django Projekteinstellungen:

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

Dieser Abschnitt fügt die erlaubten Hosts von Django hinzu, um alle URLs einzuschließen, die für Upsun-Vorschauumgebungen generiert wurden, um den geheimen Schlüssel von Django zu aktualisieren, damit er mit dem eindeutigen Projekt-Hash übereinstimmt, und um die Produktionseinstellungen (in diesem Fall) für alle Upsun-Umgebungen zu nutzen.

Zusätzliche Anmeldeinformationen werden von eingebauten Umgebungsvariablen erweitert, um Verbindungen mit von Upsun bereitgestellten verwalteten Diensten herzustellen:

# .environment # Datenbank-Umgebungsvariablen setzen 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}" # Cache-Umgebungsvariablen setzen export CACHE_HOST="$REDIS_HOST" export CACHE_PORT="$REDIS_PORT" export CACHE_SCHEME="$REDIS_SCHEME" export CACHE_URL="${CACHE_SCHEME}://${CACHE_HOST}:${CACHE_PORT}" # Redis Umgebungsvariablen setzen export REDIS_URL="$CACHE_URL "# Celery export CELERY_BROKER_URL="$CACHE_URL "# Allgemein

Es wird auch eine .upsun/config.yaml-Datei hinzugefügt, die Build, Deploy und verfügbare Dienste für das Projekt konfiguriert. Sie enthält die Konfiguration für die Dienste, die Sie über Prompts ausgewählt haben:

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

Die Anwendungskonfiguration wird ebenfalls hinzugefügt. Sie definiert, wie Django gebaut und über pip bereitgestellt wird, wie der Zugriff auf die oben genannten Dienste über Beziehungen gewährt wird und wie der Server mit Gunicorn betrieben wird:

# .upsun/config.yaml applications: new_project: type: "python:3.11" hooks: build: | set -eux pip install --upgrade pip 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" mounts: "/staticfiles": "source": "local" "source_path": "static_assets" Beziehungen: postgresql: "postgresql:postgresql" redis: "redis:redis"

Mit diesen beiden Konfigurationen können wir ein neues Projekt erstellen und Django auf Upsun bereitstellen:

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

Mit dieser Produktionsumgebung können wir nun die Ressourcen, die dieser Umgebung zur Verfügung gestellt werden, mit dem CLI-Befehl upsun resources:set anpassen.

Nächste Schritte

Sie haben vielleicht bemerkt, dass das Cookiecutter-Projekt Anmeldeinformationen für die Konfiguration der Verbindung zu Redis erwartet, um Celery für die Verwaltung der Aufgaben für die Anwendung auszuführen. Wir haben eine Umgebungsvariable für die Verbindung eingefügt, aber nicht angegeben, wie dieser Dienst tatsächlich ausgeführt werden soll.

Wir können nun eine neue Vorschauumgebung erstellen, die in Bezug auf ihre Build-Images, Container, Daten und Ressourcen so weit wie möglich mit der Produktionsumgebung übereinstimmen kann.

$ upsun branch try-celery --type staging

Von dieser Umgebung aus können wir wieder Commit und Push durchführen, wobei einige Celery-Worker definiert sind:

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

Testen Sie die Verbindung und die Leistung der Worker in der isolierten Umgebung, und wenn Sie zufrieden sind, bringen Sie die neuen Worker in die Produktion:

$ upsun merge try-celery

Und schon ist Ihr nächstes Django-Projekt mit Django PaaS von Upsun einsatzbereit und läuft.

Nützliche Links

Dieses Video ansehen

Ihr größtes Werk
steht vor der Tür

Kostenloser Test
Discord
© 2025 Platform.sh. All rights reserved.