はてな村定点観測所

運動、瞑想、睡眠、野菜350g

Python製オープンソースCMSのMezzanineを導入してみた

   

PythonのWordPressライクなCMS:Mezzanine

オープンソースのCMSというとPHPのWordPressが有名ですが、PythonにもCMSがあります。有名なのとしてMezzanineがあります。

MezzanineはWordPresをかなり意識した管理画面となっており、WordPressユーザーも違和感なく使えると思います。WordPressに比べて標準機能の豊富さをウリにしています。今回はそのMezzanineの導入方法をご紹介します。

mezzanine.jupo.org

f:id:netcraft3:20171202151101p:plain

Mezzanineの導入

MezzanineはDjangoフレームワークを使って開発されており、導入に必要な環境は以下の通りです。今回はAmazonLinuxにPython3.6で環境構築しました。

Python 2.7 to 3.6
Django 1.8 to 1.10

まず手始めにPython3.6をインストールします。

$ sudo yum install python36-devel python36-libs python36-setuptools

続いてpipをインストールします。

$ sudo /usr/bin/easy_install-3.6 pip

pipからMezzanineをインストールします。

$ sudo pip3 install mezzanine

Mezzanineのmezzanine-projectコマンドを使ってプロジェクトを作成します。プロジェクト名はhatenaにしました。

$ mezzanine-project hatena

作成したプロジェクトのディレクトリへ移動して初期DBの構築を行います。デフォルトではDBはSQLiteが使用されます。設定を変えればMySQLなども使用可能です。

$ cd hatena
$ python3 manage.py createdb --noinput

--noinputを指定しないと管理者のメールアドレスなどを対話式に設定していくことになります。

これで作業は完了です。8000ポートでサーバーを起動させてみます。

$ python3 manage.py runserver 0.0.0.0:8000

0.0.0.0:8000の指定は省略できますが、省略した場合はデフォルトではlocalhostでしかWeb画面を閲覧できなくなります。

f:id:netcraft3:20171202143501p:plain

コンソールにこんな画面が出たら起動成功です。さっそくブラウザからアクセスしてみましょう。

f:id:netcraft3:20171202143904p:plain

エラーになりました。ホスト名が許可されていないようです。プロジェクト内のsettings.pyを以下のように設定してmezzanineを再起動しました。

ALLOWED_HOSTS = ['サーバーの IPアドレス']

再度ブラウザで表示してみます。

f:id:netcraft3:20171202144222p:plain

Congratulation ! 表示に成功しました! /admin の管理画面を見てみましょう。初期設定ではユーザー名はadmin、パスワードはdefaultです。

f:id:netcraft3:20171202144334p:plain

管理画面が表示されました。WordPressとかなり似ています。

f:id:netcraft3:20171202144539p:plain

記事編集画面はこんな感じです。リッチテキストとして編集できます。

f:id:netcraft3:20171202145410p:plain

WordPressが標準では対応していないマルチドメイン機能もあります。

f:id:netcraft3:20171202145907p:plain

サイトの詳細設定。Twitter連携のためのOAuth情報の登録やAkismet連携でスパムブロックなどの設定もここで行うことができます。

f:id:netcraft3:20171202150025p:plain

次に日本語化させてみましょう。

settings.pyを以下のように書き換えてmezzanineを再起動します。

LANGUAGE_CODE = "ja"

LANGUAGES = (
    ('ja', _('Japanese')),
)

TIME_ZONE = 'Asia/Tokyo'

SE_I18N = True

日本語化できました。

f:id:netcraft3:20171202145310p:plain

管理画面も日本語化できています。

f:id:netcraft3:20171202145816p:plain

WordPressと同様にテーマやプラグインも適用することができます。こちらは有料テーマ集。テーマはプロジェクト配下のディレクトリ配置だけでは反映されず、settings.pyのINSTALLED_APPSとして登録する必要があります。他のDjangoアプリと同じですね。

f:id:netcraft3:20171202145730p:plain

Mezzanineの可能性

Mezzanineは標準構成でのオールインワンさを謳っていますが、現状だとプラグインやテーマの豊富なエコシステムを有するWordPressに比べるとかなり出来ることは制限されます。インストールもWordPressに比べるとやや敷居が高めです。

ただ、MezzanineはPython製ですのでプラグインもPythonで書くことができます。Pythonの豊富なライブラリを使うことができるので、自分でCMSをカスタマイズしていく意思があるのであればMezzanineをベースとするのも良い選択肢となるかと思います。

日本語情報はまだ少なく公式マニュアルも一部が日本語化されただけですが、今後日本語情報が増えていくことにも期待したいです。