django-app

cdriehuys.django-app

Travis

Роль 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)

О проекте

Deploy a Django app using Gunicorn.

Установить
ansible-galaxy install cdriehuys/ansible-role-django-app
Лицензия
mit
Загрузки
102
Владелец
Software developer from North Carolina.