Wagtailのはじめかた

CMSもPythonにしよう! Wagtail布教活動その1

CMSはPHPの天下となって久しいですが、Python使いなら、全部Pythonで済ませたいですよね。そんなあなたにWagtailです。

Wagtailは基本的にすべて自分で組み立てていく方式なので、WordPressのようにインストールして、はい、終わりとはいきません。が、その反面、ものすごい細かいところまで好きなようにカスタマイズできます。何よりWEBサイト作成のためだけにわざわざPHPを習得する必要がなくなり、WEBサーバーにPHPをインストールしなくてよくなります。

WEBサーバーをインターネットに公開すると、引っ切りなしに不正にサーバーへ入ろうと試みるアクセスがきます。その大半がPHPの脆弱性を狙ったものです。サーバーにそもそもPHPがなければ、そんなの痛くも痒くもないわけです。もっとも、これはPythonがWEBで天下を取っていれば逆のことが言えたとは思いますけどね。

Wagtailを使うには

WagtailはPythonのWEBアプリフレームワークであるDjangoをベースにしたCMSです。Djangoの上にWagtailが乗っかっているイメージです。このためWagtailを使うにはDjangoを知っているとよりベターですが、そうでなくてもPythonが書ければ何とかなります。

それよりもWagtail導入の障壁となるのはサーバーのルート権限が必要なことでしょう。普通のレンタルサーバーでは使えません。最低でもVPSを用意しましょう。もちろんお金がある人は専用サーバー、クラウドでも構いません。

何はともあれ、いきなり本番環境ではじめるよりは、まずはローカルでどのような感じかを試してみることをオススメします。さわってみて「おっ、いいじゃん」となったらサーバーを用意すればいいのです。

Wagtailのインストールと初期設定

インストールにはPython(pip)だけあればOKです。

公式サイトを見ると「Wagtailを使うにはたった7行だけ書けばいいゼ!」みたいに書いてありますが若干投げっぱなし感があり、Djangoを知ってて当然みたいなノリなので、Djangoをさわったことがない方のために補足しながら解説したいと思います。

以下はすべてターミナル(WindowsならPowerShell)での操作になります。

1.まずはpipでWagtailをインストールします。

pip install wagtail

Python使いには説明不要ですね。


2.Wagtailのプロジェクトを作成します。

カレントディレクトリにプロジェクト名のフォルダが作成され、必要なファイルが配置されますので、あらかじめcdコマンドでプロジェクトファイルを配置したいフォルダまで移動しておくとよいです。プロジェクトを配置するフォルダで次を実行します。

wagtail start mysite

mysiteはプロジェクト名です。ご自分で好きに変更してください。プロジェクトフォルダの中をのぞくといろいろできています。

wagstart1.png


3.プロジェクトフォルダをカレントディレクトリにします。

cd mysite


4.requirements.txtからモジュールをインストールします。

pip install -r requirements.txt

Djangoがインストールされます。


5.データベースを初期化します。次を実行します。

python manage.py migrate

ターミナルにメッセージがダーッと流れます。これはデータベースの操作ログです。データベースはMySQLやPostgreSQLなど主立ったものがサポートされています。本番環境では設定を書き換えてこれらを利用したほうがよいですが、初期状態では付属するSQLiteが使われますのでそのままいきます。

manage.pyは管理用コマンドを実行するためのDjangoのモジュールです。
migrateコマンドでDjangoがデータベースを操作してWagtailの状態を保存するためのテーブルを自動作成します。

プロジェクトフォルダをのぞくとSQLiteデータベースが作成されています。

wagstart3.png


6.サイト管理アカウント(Superuser)を作成します。次を実行します。

python manage.py createsuperuser

すると、必要な項目を設定するよう促されますので入力していきます。

Username (leave blank to use 'ore'):

ユーザー名を入力します。何も入れずにリターンキーを押すと、現在システムにログインしているユーザー名(この場合「ore」)が使われます。

Email address:

メールアドレスを登録できます。入れなくてもいいです。リターン。

Password:

管理サイトへのログインパスワードを設定します。Linaxをさわっている方にはおなじみですが入力文字はターミナル上に表示されません。なにも反応がなくても入力されています。脳内で補完しましょう。

パスワードは8文字以上ないと怒られます。簡単過ぎても怒られます。が、怒られても無視して通せますのでテスト環境では適当でいいでしょう。入力し終えたらリターン。

Password (again):

もう一度さっき入れたパスワードを入力します。リターン。

パスワードが短いなどセキュリティ上よろしくないと判断されると「Hey,Youそれでいいのかい?」的なことを英語で聞いてきますので「y」を入力でリターン。

Superuser created successfully.

このメッセージが出たら完了です。


7.開発用WEBサーバーを起動します。次を実行します。

python manage.py runserver

runserverコマンドによりDjangoが内蔵しているWEBサーバー(アプリ)が起動します。別途WEBサーバーを用意しなくても開発中はこれで動作確認することができます。サーバーが起動すると次のようなメッセージが出ます。

System check identified no issues (0 silenced).
January 21, 2020 - 21:10:08
Django version 2.2.9, using settings 'mysite.settings.dev'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

書いてあるとおりですが

・http://127.0.0.1:8000/でサーバーが起動しているよ。
・サーバーを止めるにはCTRL+BREAKを押してね。

とあるので表記のアドレスにブラウザでアクセスしてみましょう。
アドレスはhttp://localhost:8000/でもOKです。※ターミナルは起動したまま。

wagstart2.png

このような画面が表示されればWagtailのインストールと初期設定は成功です。


余談ですが、IDEを利用すると、ターミナルのURLがリンクになりクリックするだけでサイトへ移動できたり、そもそもターミナルを使わずにサーバー起動からブラウザを立ち上げURLを開くといった操作をワンクリックで実行できたりします。

wagstart4.png

作業の快適性が著しく向上しますので、可能な限りIDEを利用しましょう。私が使っているIDEについては次の記事で紹介していますので、ぜひご覧ください。

公式サイト

related pages
WagtailでWEBページを追加する
ページの追加方法 Wagtail布教活動その4

WagtailでWEBページを追加するのは簡単です。ここからがCMSの本領発揮です。前回作成したホームページをベースに内容が異なるページを追加していきます。

Read More ...
WagtailのSitemapのhttpをhttpsにする
Sitemapのhttpをhttpsに変更する方法。

Wagtailではサイトマップを動的に自動生成してくれますがプロトコルがhttpになってしまうことがあります。httpsにするには管理サイトから設定が必要です。

Read More ...
WagtailでWEBページを表示する 前編
テンプレートでWEBページ Wagtail布教活動その2

HTMLファイルはテキストデータなので、<html>から始まり</html>で終わるまでの文字列を作成するわけですが、これを純粋にPythonのソースコードだけでやるとものすごい大変です。Wagtailにはそんなことをする必要がないようにしくみが備わっています。

Read More ...
この記事の
作成日

2020-01-21

更新日

2020-01-26

ページ内検索
目次
WEB MASTER
さいた
神エクセル撲滅協会理事(自称)
さいたま市民 埼玉こそ地上の楽園