Movable Type

mt.psgiを使うと展開が早い! その1

2013年 02月 19日 03:26 | カテゴリー: Movable Type
2013年 02月 19日 03:26
Movable Type

このSound Magicianの基幹CMS、Movable Typeの備忘録です。今回のリニューアルで、やってみたことですが、資料が少なかったり、思うところ有りで残しておきます。Sound Magicianの記事は、今長いの書いています(連載ものですね)。Sound Makingの録音もあるので、とりあえず、ちょっと前に書いておいた記事で骨休めです。


 

Movable Typeも5.2.2(2012年12月現在)となり、便利にはなってきているものの、よく言われる再構築が遅いとか、管理画面の切り換えが遅いとか、いわゆる展開が遅く、高速化のためにいくつかの方法があったわけです。

で、5.2になってからなにやら「PSGI」というものが搭載されて、高速化が実現されたとのこと。僕はSEではないのでなんのこっちゃさっぱり訳わからんのですが、とにかく高速化とのことが書かれているのを目にするわけです。

そこで、PSGIを検索すると「FastCGIと比べて約1.4倍のスピード! 開発中のmt.psgiを使ってみたとか、「Apache+mod_proxy+PSGIでMovable Type 5.2を動かすとかが目につきまして、やってみたいなぁと思ってました。

最近やっとローカル環境が整って、MTも最新版で組み立てができたわけですが、インストール時の確認のmt-check.cgiで出てくるperlモジュールも、PSGIと名の付くモノが散見されまして、とりあえず突っこんでみたものの、どう動かして良いやらわからんわけです。

 

その「PSGI」を使ってみた

いや、早いです。先にあった「FastCGIと比べて約1.4倍のスピード! 開発中のmt.psgiを使ってみたにあったとおりです。さすが、MT専門企業の方の記事(Skyarcさんのエンジニアブログ)です。スピード比較も、内容もよくわかりました。

ちなみに僕のところ(Cent OS 5.8の自サーバー)で、50記事くらいの1つのブログを「すべて再構築」すると、いままで2分30秒くらいかかっていたモノが、1分23秒で再構築されました。また、管理画面の切り替わりというか、描画切り換えが早くなり、レスポンスも向上しています。マウスクリックしてコマンドを選択すると、最初はアクセスのためにもたつきますが、展開はパッと切り替わります。WindowsマシンにたとえるとCore2 Duo(2.4GHz程度)からCore i5(3GHz程度)に乗り換えたくらいの体感はあります。

 

PSGIを起動させるための準備

CPANモジュールの追加

レンタルサーバーでは制約があり、できるサーバーとできないサーバーがあるようです(「MTOS 5.2.2インストール済みAMI作成中参照)。僕は自サーバーですので、この辺の構築は自由にできます。なので先ずは、対応環境かどうかを調べて、対応環境であれば、前述のSkyarcさんのエンジニアブログ(以下この記事を参照して手順を追います)にあるように、CPANモジュールを追加します。

  • Plack
  • CGI::PSGI
  • CGI::Emulate::PSGI
  • CGI::Compile
  • SOAP::Transport::HTTP::Plack

この5つがあればよいようです。

しかし、mt-check.cgiで出てこないモジュールがあるのはなぜでしょう?たしかに、上記のうちCGI::Compileがないとmt.psgi起動時にエラーが出ます。せっかくあの嫌な黄色帯は無くなったのに、これじゃ初心者の僕には先へ進めません。Skyarcさんの記事がなかったら途方に暮れています(それ以前にやっていない)。こういうのが、初心者を惑わす原因の一つなんですよね。で、mt.psgiのドキュメントを読んでわかったのは、Skyarcさんの記事にあるようにCPANで「Task::Plack」をインストールすると必要なモジュールを一通りインストールできるようです。

試しにやってみたところ、とんでもなく時間がかかります。その上、途中で設問を求めてきます。yesとnoのどちらかがデフォルトで設定されていたので、(乱暴ですが)面倒なのでとにかくenterを押しまくりでしたが、10分以上かかりました。まあ、mt-check.cgiでのチェックが面倒な方は、こちらでじっくりインストールするのもよいでしょう。

ですが、基本的にはmt-check.cgiでのPerlモジュールのアラートを消す(黄色帯を消すためにCpanでのインストール実行)ことと、上記5つがあれば、起動は可能です。

 

mt-config.cgiの設定

僕の場合はすでに運用中の自サーバーですので、mt-config.cgiは既にできあがっています。MT5.2.2が運用されているわけです。ですから、内容に漏れがないかどうかだけを確認します。データベースも現在運用中のモノです。新規に作る必要はないです(初心者の僕は、ここで一瞬戸惑いました。説明を読むとpsgi専用のデータベースを作らなければならいような気になりました)。

 

PSGIの起動

#plackup mt.psgi

確かにこのコマンドで起動するのですが、初心者の僕にはいきなりはできませんでした。まず、(当たり前のことなんですが)mt.psgiがあるディレクトリに移動しましょう。

#cd /var/www/cgi_bin/mt/

これは一例です。ご自身が置いたMTの本体(管理画面に入るためのmt.cgiがあるディレクトリ)の置き場所に移動します。その上で、起動コマンド(#plackup mt.psgi)を実行します。問題がなければ、

HTTP::Server::PSGI: Accepting connections at http://0:5000/

と表示して、画面が止まります。

 

Movable Typeの更新

上記表示が出たところで、ローカルマシンのブラウザからご自身のURLに専用ポートの5000番を追記した形で、アクセスします。MT本体が上記の場所で、URLがwww.hogehoge.comとしたとき、

http://www.hogehoge.com:5000/cgi_bin/mt/mt.cgi

です。

僕の場合は、ブラウザになんの変化もなく、通常のサインイン画面が表示されました。プラグインを入れたときにも更新時に何も表示されずに、このサインイン画面になるのと同じようで、普通にユーザー名とパスワードを入れてログインします。これで更新自体はされているようです。

ちなみに、この時サーバー機には、画面が止まったところから、アクセスしたブラウザの情報などを表示します。ページが進む度にそのメッセージが表示されていきます。

ローカルマシンのブラウザから各管理画面を閲覧してみてください。更新がうまくいっていると既に速さが実感できると思います。デフォルトの再構築を試すとより具体的に時間表示されるのでわかりやすいです。実感できたら、念のため、サーバーを再起動します。

先ほどの止まった画面(ブラウザからのアクセスがあれば追加メッセージがある状態)から抜けるには、Ctrl+Cでプロンプトに戻り、rebootします(Cent OSの場合です)。ここでも僕は、プロンプトに戻るのを忘れて一瞬考えました。なんか変な編集モードに入っているようで、ただrebootと打っても応答しないわけです。恥ずかしい初心者のやることですね。

 

続きます。