cdriehuys.django-app
cdriehuys.django-app
一个用来通过gunicorn服务Django应用的Ansible角色。
注意: 如果这个角色没有你需要的功能,请随时提一个问题,让我们进一步讨论。
目录
要求
为了使用角色上传的设置,你必须在生产设置文件中导入本地设置文件。例如:
# 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: your secret key here
常用
这些设置用于控制有关你项目的导入信息。它们也是最常被覆盖的变量,因为每个项目都不同。
# 你的应用的可读名称。你的项目将被克隆到这个名称的目录中。
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日志配置。这应该是一个包含与Python日志模块期望的相同属性的YAML字典。
django_logging: {}
# 静态文件上传路径
django_media_root: /var/www/{{ inventory_hostname }}/media
django_static_root: /var/www/{{ inventory_hostname }}/static
Gunicorn
以下变量控制负责服务Django应用的Gunicorn服务器的配置。
# 指定要安装的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
# 存储Gunicorn PID文件的路径
gunicorn_pid: /run/{{ gunicorn_runtime_directory }}/pid
# 与gunicorn通信使用的套接字路径
gunicorn_socket: /run/{{ gunicorn_runtime_directory }}/socket
# gunicorn套接字的Unix路径
gunicorn_socket_unix: "unix:{{ gunicorn_socket }}"
# gunicorn二进制文件的路径
gunicorn_bin: "{{ venv }}/bin/gunicorn"
# gunicorn运行的目录
gunicorn_working_directory: "{{ django_app_dir }}"
# 相对于'gunicorn_working_directory'要运行的WSGI应用的路径。
gunicorn_wsgi_app: "{{ app_package }}.wsgi:application"
# gunicorn服务运行时附带的额外环境变量。这些变量在运行'manage.py'任务时也会设置。
gunicorn_environment: {}
依赖
依赖于以下角色:
- cdriehuys.virtualenv
示例剧本
要运行角色,可以按如下方式包含它。
- hosts: all
roles:
- cdriehuys.django-app
许可证
MIT
作者信息
Chathan Driehuys (cdriehuys@gmail.com)