cdriehuys.django-app

cdriehuys.django-app

Travis

Ansible-Rolle zur Bereitstellung einer Django-Anwendung mit gunicorn.

Hinweis: Wenn diese Rolle eine Funktionalität nicht bietet, die Sie wünschen, können Sie gerne ein Problem melden, damit wir darüber sprechen können.

Inhaltsverzeichnis

Anforderungen

Um die von der Rolle hochgeladenen Einstellungen zu verwenden, müssen Sie die lokale Einstellungsdatei in Ihrer Produktionsdatei importieren. Zum Beispiel:

# production_settings.py

DEBUG = False
ALLOWED_HOSTS = ['...']


try:
    from app_package.local_settings import *
except ImportError:
    pass

Wir machen einige Annahmen über die Struktur Ihres Projekts. Diese Annahmen können durch Setzen der entsprechenden Variablen überschrieben werden, aber es wäre am einfachsten, wenn Ihr Projekt folgendermaßen strukturiert ist:

app-name
├── app_package
│   ├── app_package
│   │   └── settings.py
│   ├── andere_apps
│   └── sind_hier
├── LICENSE
└── requirements.txt

Rollenvariablen

Hier ist eine Liste der Variablen, die von der Rolle verwendet werden. Jede Variable, außer denjenigen in den Benötigten Variablen, hat ihren Standardwert aufgelistet.

Benötigt

Die folgenden Variablen müssen gesetzt werden, damit die Rolle läuft.

# Pfad zum Git-Repository, in dem Ihr Code gespeichert ist
app_repo: https://your-repo-host/user/repo-name

# Geheimschlüssel, der für Django verwendet wird
django_secret_key: Ihr Geheimschlüssel hier

Häufig Verwendet

Diese Einstellungen steuern Informationen über Ihr Projekt. Sie sind auch die Variablen, die am häufigsten überschrieben werden, da sie von Projekt zu Projekt variieren.

# Der in lesbarer Form angegebene Name Ihrer Anwendung. Ihr Projekt wird
# in ein Verzeichnis mit diesem Namen geklont.
app_name: app

# Der Paketname ist der Name Ihres tatsächlichen Python-Moduls. Dies ist der
# Name, den Sie bei 'django-admin startproject <app_package>' angegeben haben.
app_package: app

# Die Version Ihrer Anwendung, die bereitgestellt werden soll. Dies kann ein spezifischer
# Commit-Hash, ein Branch-Name oder ein Tag-Name sein.
app_repo_version: master

# Dies ist eine Liste von Systempaketen, die installiert sein müssen, damit
# Ihr Projekt läuft.
app_required_packages: []

# Die Django-Einstellungsdatei, die verwendet werden soll.
django_settings_module: "{{ app_package }}.settings"

Geteilt

Diese Variablen werden von mehreren Rollen verwendet, um das gemeinsame Verhalten zu steuern.

# Die Dauer, für die der apt-Cache in Sekunden gültig ist
apt_cache_time: 3600

Django

Diese Variablen dienen zur Konfiguration des Verhaltens von Django.

# Datenbankkonfiguration. Dies sollte ein Wörterbuch enthalten, das
# dieselben Attribute wie Django erwartet (ENGINE, HOST, USER, usw.).
django_databases: {}

# Eine Liste von Django-Management-Befehlen, die während der Bereitstellung ausgeführt werden sollen. Dies
# sollte ein vollständiger Befehl wie 'collectstatic --noinput' sein
django_manage_commands: []

# Weitere Django-Einstellungen, die Sie konfigurieren möchten, können
# als Wörterbuch angegeben werden. Stellen Sie sicher, dass Sie Ihre Werte doppelt
# anführen, damit sie korrekt interpretiert werden.
django_project_settings: {}


# Pfad zum Stammverzeichnis des Django-Projekts
django_project: /opt/{{ app_name }}

# Pfad zur Django-Anwendung (der Ordner mit 'manage.py')
django_app_dir: "{{ django_project }}/{{ app_package }}"

# Pfad, wohin die lokale Einstellungsdatei hochgeladen wird
django_local_settings: "{{ django_app_dir }}/{{ app_package }}/local_settings.py"

# Pfad zur requirements.txt-Datei
django_requirements: "{{ django_project }}/requirements.txt"

# Pfad zur Django-Protokolldatei. Hier wird nichts geschrieben, außer Sie
# überschreiben die Einstellung 'django_logging'.
django_log_file: /var/log/{{ app_name }}/django.log

# Django-Logging-Konfiguration. Dies sollte ein YAML-Wörterbuch mit
# denselben Attributen sein, die das Python-Logging-Modul erwartet.
django_logging: {}

# Pfade, wo statische Dateien hochgeladen werden
django_media_root: /var/www/{{ inventory_hostname }}/media
django_static_root: /var/www/{{ inventory_hostname }}/static

Gunicorn

Die folgenden Variablen steuern die Konfiguration des Gunicorn-Servers, der für die Bereitstellung der Django-Anwendung verantwortlich ist.

# Geben Sie an, welche Version von Gunicorn installiert werden soll. Dies kann jede Version
# sein, die pip akzeptiert.
gunicorn_version: gunicorn

# Der Benutzer, der zum Ausführen von Gunicorn erstellt wurde.
gunicorn_user: gunicorn


# Der Pfad, an den die Gunicorn-Systemd-Dienstkonfiguration hochgeladen wird.
gunicorn_service_conf: /etc/systemd/system/gunicorn.service

# Der Pfad, an den die Gunicorn-Socket-Konfiguration hochgeladen wird.
gunicorn_socket_conf: /etc/systemd/system/gunicorn.socket

# Der Pfad, an den die temporäre Gunicorn-Konfiguration hochgeladen wird.
gunicorn_tempfile_conf: /etc/tmpfiles.d/gunicorn.conf


# Verzeichnis relativ zu '/run', um Laufzeitinformationen zu speichern
gunicorn_runtime_directory: gunicorn

# Pfad zum Speichern der PID-Datei von Gunicorn
gunicorn_pid: /run/{{ gunicorn_runtime_directory }}/pid

# Pfad zum Socket, der zur Kommunikation mit Gunicorn verwendet wird
gunicorn_socket: /run/{{ gunicorn_runtime_directory }}/socket

# Unix-Pfad zum Gunicorn-Socket
gunicorn_socket_unix: "unix:{{ gunicorn_socket }}"


# Pfad zur Gunicorn-Binärdatei
gunicorn_bin: "{{ venv }}/bin/gunicorn"

# Verzeichnis, aus dem Gunicorn ausgeführt wird
gunicorn_working_directory: "{{ django_app_dir }}"

# Pfad zur auszuführenden WSGI-Anwendung, relativ zu
# 'gunicorn_working_directory'.
gunicorn_wsgi_app: "{{ app_package }}.wsgi:application"

# Zusätzliche Umgebungsvariablen, mit denen der Gunicorn-Dienst ausgeführt wird.
# Diese Variablen werden auch beim Ausführen von 'manage.py'-Aufgaben festgelegt.
gunicorn_environment: {}

Abhängigkeiten

Hängt von den folgenden Rollen ab:

- cdriehuys.virtualenv

Beispiel-Playbook

Um die Rolle auszuführen, fügen Sie sie wie folgt hinzu.

- hosts: all
  roles:
     - cdriehuys.django-app

Lizenz

MIT

Autoreninformationen

Chathan Driehuys (cdriehuys@gmail.com)

Über das Projekt

Deploy a Django app using Gunicorn.

Installieren
ansible-galaxy install cdriehuys.django-app
GitHub Repository
Lizenz
mit
Downloads
115
Besitzer
Software developer from North Carolina.