cdriehuys.django-app
cdriehuys.django-app
Rola Ansible do uruchamiania aplikacji Django z użyciem gunicorn.
Uwaga: Jeśli ta rola nie ma jakiejkolwiek funkcjonalności, której potrzebujesz, śmiało otwórz zgłoszenie, abyśmy mogli to omówić.
Spis treści
Wymagania
Aby wykorzystać ustawienia przesłane przez rolę, musisz zaimportować lokalny plik ustawień w swoim pliku ustawień produkcyjnych. Na przykład:
# production_settings.py
DEBUG = False
ALLOWED_HOSTS = ['...']
try:
from app_package.local_settings import *
except ImportError:
pass
Zakładamy również pewną strukturę twojego projektu. Choć można to zmienić, ustawiając odpowiednie zmienne, najłatwiej będzie, jeśli twój projekt będzie miał następującą strukturę:
app-name
├── app_package
│ ├── app_package
│ │ └── settings.py
│ ├── other_apps
│ └── are_here
├── LICENSE
└── requirements.txt
Zmienne roli
Oto lista zmiennych używanych przez rolę. Każda zmienna, z wyjątkiem tych w sekcji Wymagane, ma podaną domyślną wartość.
Wymagane
Następujące zmienne muszą być ustawione, aby rola mogła działać.
# Ścieżka do repozytorium git, w którym przechowywany jest twój kod
app_repo: https://twoje-repo-host/user/repo-name
# Klucz tajny do używania w Django
django_secret_key: twój tajny klucz
Często używane
Te ustawienia są używane do kontrolowania informacji o twoim projekcie. To również zmienne, które najczęściej są nadpisywane, ponieważ różnią się w zależności od projektu.
# Przyjazna nazwa twojej aplikacji. Twój projekt będzie
# sklonowany do katalogu o tej nazwie.
app_name: app
# Nazwa pakietu to nazwa twojego modułu Python. To jest
# nazwa, którą podałeś przy 'django-admin startproject <app_package>'.
app_package: app
# Wersja twojej aplikacji do wdrożenia. Może to być
# konkretne hasło commit, nazwa gałęzi lub nazwa tagu.
app_repo_version: master
# Lista pakietów systemowych, które muszą być zainstalowane
# aby twój projekt działał.
app_required_packages: []
# Plik ustawień Django do użycia.
django_settings_module: "{{ app_package }}.settings"
Wspólne
Te zmienne są używane przez wiele ról do kontrolowania wspólnego zachowania.
# Czas, przez jaki pamięć podręczna apt jest ważna, w sekundach
apt_cache_time: 3600
Django
Te zmienne są używane do konfigurowania zachowania Django.
# Konfiguracja bazy danych. Powinna to być słownik zawierający
# te same atrybuty, których oczekuje Django (ENGINE, HOST, USER itp.).
django_databases: {}
# Lista poleceń zarządzających Django, które mają być uruchomione podczas wdrożenia. To
# powinno być pełne polecenie, takie jak 'collectstatic --noinput'
django_manage_commands: []
# Dodatkowe ustawienia Django, które chcesz skonfigurować, można
# podać jako słownik. Upewnij się, że wartości są podwójnie cudzysłowione, aby
# poprawnie je przetworzyć.
django_project_settings: {}
# Ścieżka do głównego katalogu projektu Django
django_project: /opt/{{ app_name }}
# Ścieżka do aplikacji Django (katalog z 'manage.py')
django_app_dir: "{{ django_project }}/{{ app_package }}"
# Ścieżka, w której lokalny plik ustawień będzie przesyłany
django_local_settings: "{{ django_app_dir }}/{{ app_package }}/local_settings.py"
# Ścieżka do pliku requirements.txt
django_requirements: "{{ django_project }}/requirements.txt"
# Ścieżka do pliku dziennika Django. Nic nie będzie tu zapisywane, chyba
# że nadpiszesz ustawienie 'django_logging'.
django_log_file: /var/log/{{ app_name }}/django.log
# Konfiguracja logowania Django. Powinien to być słownik YAML z
# tymi samymi atrybutami, które oczekuje moduł logowania Pythona.
django_logging: {}
# Ścieżki, w których będą przesyłane pliki statyczne
django_media_root: /var/www/{{ inventory_hostname }}/media
django_static_root: /var/www/{{ inventory_hostname }}/static
Gunicorn
Następujące zmienne kontrolują konfigurację serwera Gunicorn, który odpowiada za serwowanie aplikacji Django.
# Określ, którą wersję gunicorn zainstalować. Może to być dowolna wersja,
# którą akceptuje pip.
gunicorn_version: gunicorn
# Użytkownik stworzony do uruchamiania gunicorn.
gunicorn_user: gunicorn
# Ścieżka, w której plik konfiguracyjny usługi gunicorn jest przesyłany.
gunicorn_service_conf: /etc/systemd/system/gunicorn.service
# Ścieżka, w której znajduje się plik konfiguracyjny gniazda gunicorn.
gunicorn_socket_conf: /etc/systemd/system/gunicorn.socket
# Ścieżka do pliku konfiguracyjnego tymczasowych plików gunicorn.
gunicorn_tempfile_conf: /etc/tmpfiles.d/gunicorn.conf
# Katalog względny do '/run', w którym przechowywane są informacje o czasie działania
gunicorn_runtime_directory: gunicorn
# Ścieżka do przechowywania pliku PID Gunicorn
gunicorn_pid: /run/{{ gunicorn_runtime_directory }}/pid
# Ścieżka do gniazda wykorzystywanego do komunikacji z gunicorn
gunicorn_socket: /run/{{ gunicorn_runtime_directory }}/socket
# Unixowa ścieżka do gniazda gunicorn
gunicorn_socket_unix: "unix:{{ gunicorn_socket }}"
# Ścieżka do pliku binarnego gunicorn
gunicorn_bin: "{{ venv }}/bin/gunicorn"
# Katalog, z którego uruchamiany jest gunicorn
gunicorn_working_directory: "{{ django_app_dir }}"
# Ścieżka do aplikacji WSGI, która ma być uruchomiona, w odniesieniu do
# 'gunicorn_working_directory'.
gunicorn_wsgi_app: "{{ app_package }}.wsgi:application"
# Dodatkowe zmienne środowiskowe, z którymi uruchamiana jest usługa gunicorn.
# Te zmienne są również ustawiane podczas uruchamiania zadań 'manage.py'.
gunicorn_environment: {}
Zależności
Zależności od następujących ról:
- cdriehuys.virtualenv
Przykładowy playbook
Aby uruchomić rolę, dodaj ją w następujący sposób.
- hosts: all
roles:
- cdriehuys.django-app
Licencja
MIT
Informacje o autorze
Chathan Driehuys (cdriehuys@gmail.com)
ansible-galaxy install cdriehuys.django-app