rm-software.django

役割名

Djangoウェブ(Uwsgi)、タスク(Celery)、またはビート(Celerybeat)アプリを構築し、デプロイします。

要件

セットアップされたUbuntuサーバー。Uwsgiは、nginx役割を介してwsgiプロキシを期待します。

役割変数

デフォルトはDjangoを構築しますが、uwsgiウェブアプリのみをデプロイします。

django_webapp: yes
django_taskapp: no
django_beatapp: no
django_monitorapp: no
django_flowerapp: no

仮想環境、ローカルクローン、データベースユーザー/名前/パスなどのデフォルトとして使用されます。 英数字と_のみ、データベース名やディレクトリとして不正はありません。

django_project_name: django

プロジェクトは{{ django_project_home }}/{{ django_project_name }}にクローンされます。

django_project_home: '{{ ansible_env.HOME }}'

ソースコードリポジトリ、ブランチ、およびディレクトリ

django_repo_url: ssh://[email protected]/myawesomeproject
django_repo_version: default
django_repo_type: git
django_local_repo: '{{ django_project_name }}'

ドメインと名前(Djangoのデフォルトサイト、nginxなど用)

django_hostname: '{{ hostname }}'
django_project_description: '{{ description }}'

サイトの秘密鍵

django_secret_key: 'changethesecretkeyforeachtarget'

Djangoの設定.pyファイルに一致する必要があります。例:'dev'

django_settings_module: 'config.settings.production'

Pipインストール要件

django_pip_requirements: production.txt

データベース設定。

django_db_host: localhost
django_db_user: '{{ django_project_name }}'
django_db_name:  '{{ django_project_name }}'
django_db_password:  '{{ django_project_name }}'
django_db_superuser: postgres
django_db_superpassword: postgres
django_db_locale: en_US.UTF-8

まれに変更される設定

django_upstream_hostkey: bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==
django_wsgi_addr: '{{ ansible_lo.ipv4.address }}'
django_wsgi_port: 10000
django_uwsgi_processes: '{{ ansible_processor_cores }}'
django_uwsgi_harakiri: 60

パス

django_project_path: '{{ django_project_home }}/{{ django_project_name }}' # 通常cdvirtualenv
django_log_path: '{{ django_project_path }}/log'
django_run_path: '{{ django_project_path }}/run'
django_media_root: '{{ django_project_path }}/media'
django_static_root: '{{ django_project_path }}/static'
django_repo_path: '{{ django_project_path }}/{{ django_project_name }}' # ここにクローン
django_project_subdir: . # djangoプロジェクトがdjango_project_pathの下にある場合は変更
django_path: '{{ django_repo_path }}/{{ django_project_subdir }}'
django_collectstatic_once: no # whitenoiseを使用している場合は、すべてのウェブアプリインスタンスでcollectstaticを実行する必要があります

標準Django環境設定変数

django_base_settings:
  DJANGO_SETTINGS_MODULE: '{{ django_settings_module }}'
  DJANGO_SECRET_KEY: '{{ django_secret_key }}'
  DATABASE_URL: 'postgres://{{ django_db_user }}:{{ django_db_password }}@{{ django_db_host }}/{{ django_db_name }}'

追加のDjango環境設定変数

django_extra_settings:

基本パッケージはそのままにしておき、django_extra_apt_packagesで追加します:

django_base_apt_packages:
    # django_python設定のためにすでにインストールされていると仮定
    # - python-pip
    # - python3.x
    # - python3.x-dev
    - gettext
    # データベース
    - python-psycopg2
    # Pillow、pylibmcの共有依存関係
    - zlib1g-dev
    # Mysql、Postgresqlおよびpsycopg2の依存関係
    - libpq-dev
    - libmysqlclient-dev
    # Pillowの依存関係
    - libtiff5-dev
    - libjpeg8-dev
    - libfreetype6-dev
    - liblcms2-dev
    - libwebp-dev
    # django-extensions
    - graphviz-dev
    # wsgi、celeryプロセス管理用
    - supervisor
    # devopsの便宜のため
    - emacs24-nox
    # 別のサーバーに移行するまで
    - redis-server

django_extra_apt_packages:

Celery設定

celery_concurrency: '{{ ansible_processor_cores }}'
celery_numprocs: '{{ ansible_processor_cores }}'
celery_pool_implementation: prefork # prefork(デフォルト)、eventlet、gevent、またはsolo
celery_beat_schedulers: django_celery_beat.schedulers:DatabaseScheduler

依存関係

  • rm-software.nginx
  • rm-software.python
  • rm-software.rabbitmq
  • rm-software.redis
  • rm-software.virtualenv

さらに、データベースサーバーを別途設定するか、以下のように構成します:

  • rm-software.postgresql

例プレイブック

- hosts: appservers
  tasks:
    - import_role:
        name: postgresql
      vars:
        postgresql_install_client: yes
    - import_role:
        name: python
    - import_role:
        name: virtualenv
    - import_role:
        name: django
      vars:
        django_webapp: yes
        django_taskapp: no
        django_beatapp: no

大半のdjango_変数はgroup_varsで設定されています。

プロジェクトについて

Django web, task and/or geat app installation

インストール
ansible-galaxy install rm-software.django
ライセンス
apache-2.0
ダウンロード
119