MT5.2へのアップグレードとPSGIでの運用開始

公開

本日午前よりMovable Type 5.2の提供が開始されました(公式ブログの告知)。今バージョンよりPSGIによる運用に対応したことから早速アップデートを行いPSGIでの運用を開始しましたので、簡単にレポートしたいと思います。

MT5.2へのアップグレード

MT5.1へのアップグレードの際は新規インストールを行いましたが、今回は上書きインストールを行いました。手順は、ファイルを単純に上書きした後、alt-tmplに格納している管理画面のテンプレートを最新のものとマージを行いました(エディタがTinyMCEに変更されたことによる変更が中心と思われます)。その後、管理画面にログインするとアップデート処理が行われ、無事アップグレードが完了しました。

当サイトで従来より利用している下記プラグインは、MT5.2においても問題なく動作しています。

PSGIでの運用開始まで

MT5.2へのアップグレードを完了させた後、PSGIでの運用準備を行いました。先日「さくらのVPS+Apache+PSGIサーバーでMT5.2のmt.psgiを動かす(環境構築編)」で紹介したとおり、さくらのVPS上に必要なモジュールのインストールを完了しplackupでの動作確認は取れているため、推奨PSGIサーバであるStarmanでの起動を行うところから始めました。

Starmanでの起動確認

Task::Plackで/usr/local/bin/にStarmanが入っているので、下記コマンドですぐに起動しました。

$ cd path/to/mt
$ starman ./mt.psgi

正常に起動することを確認したら、一旦停止させます。

デーモン化

デーモン化の方法は未知のためGoogleで調べたところ、Toi企画様の記事「PSGI対応のMTをデーモン化する方法」で紹介されているupstartを利用する方法や、uzuki05様の記事「MovableType 5.2β で nginx + PSGIを試す(Starman+Supervisorでデーモン化)」で紹介されているSupervisorを利用する方法が見つかりました。今回はuzuki05様が紹介されているSupervisorを採用することにしました。

概ねuzuki05様の記事に従って準備したのですが、記事とは違って起動スクリプトをドキュメントルート外に置いたところではまり、次のようなエラーが出ました。

Error while loading /var/www/Path/To/VirtualHostRoot/public_html/mt5/mt.psgi: Can't locate MT/PSGI.pm in @INC (@INC contains: extlib lib /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /var/www/Path/To/VirtualHostRoot/public_html/mt5/mt.psgi line 12.

Starmanでmt.psgiを起動する際は、mt.psgiやmt.cgiがあるディレクトリに移動していないといけないようです。うっかりでした。よって起動スクリプトは次のようにしました(にっく様の「Amazon EC2 + nginx + PSGI で、MTを起動する」で紹介されているスクリプトが見通しも良かったので参考にさせていただきました)。

#!/bin/sh

ROOT=/var/www/Path/To/VirtualHostRoot # ドキュメントルートの1階層上
MTDIR=$ROOT/public_html/mt5
PID=$ROOT/psgi/mt.pid
PSGI=./mt.psgi
cd $MTDIR
/usr/local/bin/starman -l 127.0.0.1:5000 --pid $PID $PSGI

また、/etc/supervisord.confの設定は次のようにし、ログの記録を行うようにしました。

[program:mt]
user=skyward
command=/var/www/Path/To/VirtualHostRoot/psgi/mtrun.sh
autostart=true
autorestart=true
stopsignal=QUIT
log_stdout=true
log_stderr=true
logfile=/var/www/Path/To/VirtualHostRoot/logs/mtpsgi_log

起動確認

MTにログインし、システムの中のシステム情報を開いてサーバーモデルを確認します。次のようにPSGIになっていれば作業完了です。
システム情報の例

PSGIで運用してみての印象

管理画面の各ページにアクセスしてみると、従来と比べて格段に表示が速くなっていると感じます。他のCMSと比較すると、MTの管理画面の表示が遅くストレスに感じることもありましたが、これからはかなり快適にMTが利用できそうな印象です。

閲覧者のみなさまがPSGIの恩恵を受けられるのはタグ検索ページです。タグ検索ページのレスポンス受信に従来は約1,300msかかっていましたが、PSGIでは約500msと大幅にスピードアップしていました。関連記事の閲覧が少しでも快適になれば幸いです(タグ付けがイマイチですが)。

VPSや専用サーバーのような環境でないと導入が難しい問題はありますが、PSGIでのMT運用に今後も期待したいと思います。