django-app
cdriehuys.django-app
Роль Ansible для развертывания приложения Django с помощью gunicorn.
Примечание: Если у этой роли нет желаемой функции, не стесняйтесь открыть проблему, чтобы мы могли обсудить это более подробно.
Содержание
Требования
Чтобы использовать настройки, загруженные этой ролью, необходимо импортировать локальный файл настроек в файл настроек для продакшн. Например:
# production_settings.py
DEBUG = False
ALLOWED_HOSTS = ['...']
try:
from app_package.local_settings import *
except ImportError:
pass
Мы также предполагаем, что структура вашего проекта выглядит следующим образом. Хотя эти предположения могут быть изменены путем установки соответствующих переменных, будет проще, если ваш проект будет организован следующим образом:
app-name
├── app_package
│ ├── app_package
│ │ └── settings.py
│ ├── other_apps
│ └── are_here
├── LICENSE
└── requirements.txt
Переменные роли
Вот список переменных, используемых ролью. Каждая переменная, кроме тех, которые указаны в Обязательных переменных, имеет указанное значение по умолчанию.
Обязательные
Следующие переменные должны быть установлены, чтобы роль работала.
# Путь к репозиторию git, где хранится ваш код
app_repo: https://your-repo-host/user/repo-name
# Секретный ключ для использования в Django
django_secret_key: ваш секретный ключ здесь
Часто используемые
Эти настройки используются для управления информацией о проекте. Это также те переменные, которые чаще всего переопределяются, так как они различаются для разных проектов.
# Человекочитаемое название вашего приложения. Ваш проект будет
# клонирован в директорию с этим именем.
app_name: app
# Имя пакета - это имя вашего фактического python модуля. Это имя,
# которое вы указали при 'django-admin startproject <app_package>'.
app_package: app
# Версия вашего приложения для развертывания. Это может быть
# конкретный хэш коммита, имя ветки или имя тега.
app_repo_version: master
# Это список системных пакетов, которые должны быть установлены для
# корректной работы вашего проекта.
app_required_packages: []
# Файл настроек Django для использования.
django_settings_module: "{{ app_package }}.settings"
Общие
Эти переменные используются несколькими ролями для управления общим поведением.
# Время, в течение которого кэш apt действителен (в секундах)
apt_cache_time: 3600
Django
Эти переменные используются для настройки поведения Django.
# Конфигурация базы данных. Это должен быть словарь, содержащий
# те же атрибуты, которые ожидает Django (ENGINE, HOST, USER и т.д.).
django_databases: {}
# Список команд управления Django, которые нужно выполнить во время
# развертывания. Это должна быть полная команда, например 'collectstatic --noinput'
django_manage_commands: []
# Любые дополнительные настройки Django, которые вы хотите настроить,
# могут быть предоставлены в виде словаря. Убедитесь, что вы заключили
# свои значения в двойные кавычки, чтобы они правильно обрабатывались.
django_project_settings: {}
# Путь к корню проекта Django
django_project: /opt/{{ app_name }}
# Путь к приложению Django (папка с 'manage.py')
django_app_dir: "{{ django_project }}/{{ app_package }}"
# Путь, куда будет загружен локальный файл настроек
django_local_settings: "{{ django_app_dir }}/{{ app_package }}/local_settings.py"
# Путь к файлу requirements.txt
django_requirements: "{{ django_project }}/requirements.txt"
# Путь к файлу журнала Django. Ничего здесь не будет записано, если вы
# не переопределите настройку 'django_logging'.
django_log_file: /var/log/{{ app_name }}/django.log
# Конфигурация журнала Django. Это должен быть словарь YAML с
# теми же атрибутами, которые ожидает модуль логирования Python.
django_logging: {}
# Пути, по которым загружаются статические файлы
django_media_root: /var/www/{{ inventory_hostname }}/media
django_static_root: /var/www/{{ inventory_hostname }}/static
Gunicorn
Следующие переменные контролируют конфигурацию сервера Gunicorn, который отвечает за развертывание приложения Django.
# Укажите, какую версию gunicorn установить. Это может быть любой
# спецификатор версии, который принимает pip.
gunicorn_version: gunicorn
# Пользователь, созданный для запуска gunicorn.
gunicorn_user: gunicorn
# Путь, куда загружается конфигурационный файл сервиса gunicorn.
gunicorn_service_conf: /etc/systemd/system/gunicorn.service
# Путь, куда загружается конфигурация сокета gunicorn.
gunicorn_socket_conf: /etc/systemd/system/gunicorn.socket
# Путь, куда загружается конфигурация временного файла gunicorn.
gunicorn_tempfile_conf: /etc/tmpfiles.d/gunicorn.conf
# Директория относительно '/run' для хранения информации о выполнении
gunicorn_runtime_directory: gunicorn
# Путь для хранения PID-файла Gunicorn
gunicorn_pid: /run/{{ gunicorn_runtime_directory }}/pid
# Путь к сокету, используемому для связи с gunicorn
gunicorn_socket: /run/{{ gunicorn_runtime_directory }}/socket
# Unix путь к сокету gunicorn
gunicorn_socket_unix: "unix:{{ gunicorn_socket }}"
# Путь к исполняемому файлу gunicorn
gunicorn_bin: "{{ venv }}/bin/gunicorn"
# Директория, из которой запускается gunicorn
gunicorn_working_directory: "{{ django_app_dir }}"
# Путь к WSGI приложению для запуска, относительно
# 'gunicorn_working_directory'.
gunicorn_wsgi_app: "{{ app_package }}.wsgi:application"
# Дополнительные переменные окружения, с которыми запускается сервис gunicorn.
# Эти переменные также устанавливаются при выполнении задач 'manage.py'.
gunicorn_environment: {}
Зависимости
Зависит от следующих ролей:
- cdriehuys.virtualenv
Пример плейбука
Чтобы запустить роль, включите ее следующим образом.
- hosts: all
roles:
- cdriehuys.django-app
Лицензия
MIT
Информация об авторе
Чатан Дриёй (cdriehuys@gmail.com)
ansible-galaxy install cdriehuys/ansible-role-django-app