cdriehuys.django-app

cdriehuys.django-app

Travis

このAnsibleロールは、gunicornを使ってDjangoアプリケーションを提供します。

注意: このロールに必要な機能がない場合は、イシューをオープンしてください。詳しく話し合いましょう。

目次

要件

ロールがアップロードした設定を利用するには、プロダクション設定ファイルにローカル設定ファイルをインポートする必要があります。例えば:

# 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のsystemdサービスユニットがアップロードされるパス。
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 }}"

# 実行する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

著者情報

Chathan Driehuys (cdriehuys@gmail.com)

プロジェクトについて

Deploy a Django app using Gunicorn.

インストール
ansible-galaxy install cdriehuys.django-app
ライセンス
mit
ダウンロード
115
所有者
Software developer from North Carolina.