Wagtail入門。Dockerでの環境構築からuWSGI+Nginx+PostgreSQL構成まで

Wagtail入門。Dockerでの環境構築からuWSGI+Nginx+PostgreSQL構成まで

Django製のCMSライブラリ Wagtail の環境構築を、この記事1本にまとめて解説します。

  1. docker-composeによる最小構成での起動
  2. uWSGI + Nginx + PostgreSQLを組み合わせた本番相当の構成

Wagtailとは?

  • DjangoのCMS用ライブラリ
  • ブログやポータルサイトに特化しているわけではなく、あくまでCMSを作成するためのライブラリ
  • WordPressのようにインストールしたらすぐサイトとして使える、というものではない
  • DjangoのCMSライブラリとしては最も使われている(GitHubのスター数から判断)

前提として、DockerとGitがインストールされていることが必要です。

1. docker-composeで最小構成を作る

サンプルのリポジトリを用意しています: docker-wagtail

初期インストール

コンテナをビルドし、Wagtailのプロジェクトを作成します。

docker-compose build --no-cache
docker-compose run python3 wagtail start project

マイグレーションでDBを作成し、ログイン用のスーパーユーザーを作成します。

docker-compose run python3 python project/manage.py migrate
docker-compose run python3 python manage.py createsuperuser

起動

docker-compose up

http://localhost:8000 にアクセスして、Wagtailのウェルカムページが表示されれば完了です。

2. uWSGI + Nginx + PostgreSQL構成を作る

本番相当の構成(アプリケーションサーバー: uWSGI、リバースプロキシ: Nginx、DB: PostgreSQL)もdocker-composeで構築できます。

サンプルのリポジトリ: wagtail-postgres-docker

リポジトリの取得とビルド

git clone https://github.com/daikidomon/wagtail-postgres-docker
cd wagtail-postgres-docker
docker-compose build --no-cache

Wagtailプロジェクトの作成

docker-compose run python3 wagtail start project .

settingsをPostgreSQL用に修正

./app/project/settings/base.py のDATABASESを修正します。接続情報は環境変数から取得する形にしておくと、環境ごとの切り替えが容易です。

import os

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.environ.get('POSTGRES_DB', 'postgres'),
        'USER': os.environ.get('POSTGRES_USER', 'postgres'),
        'PASSWORD': os.environ.get('POSTGRES_PASSWORD', 'postgres'),
        'HOST': 'db',
        'PORT': os.environ.get('POSTGRES_PORT', 5432),
    }
}

マイグレーションと管理者ユーザーの作成

docker-compose run python3 python manage.py makemigrations
docker-compose run python3 python manage.py migrate
docker-compose run python3 python manage.py createsuperuser

静的ファイルの収集

CSS・JSファイルをcollectstaticで集めます(Nginxから配信するために必要です)。

docker-compose run python3 python manage.py collectstatic

起動

docker-compose up

ブラウザからアクセスしてWagtailの画面が表示されれば構築完了です。

まとめ

構成用途
Wagtail単体 + SQLite動作確認・学習用の最小構成
Wagtail + uWSGI + Nginx + PostgreSQL本番相当の構成

Djangoでよく遭遇するエラーの対処はDjangoのよくあるエラーと解決方法まとめを参考にしてください。

技術ブログ一覧へ戻る