MovableType管理画面をPSGI(Plack,Starman, Starlet)で動かす方法

事前準備

Task::Plackのインストールをしておいてください。
Plack入門:Plackでウェブサーバを起動してhello worldするまで

前提

下記のようなURL・パスになっているという前提で解説します。

URLファイルシステム上の位置
ブログhttp://blog.example.com//path/to/blog/
MT管理画面(mt.cgiの場所)http://blog.example.com/mt//path/to/blog/mt/
mt-statichttp://blog.example.com/mt/mt-static//path/to/blog/mt/mt-static/

実施手順

1.psgiファイルを作成します。
mt.cgiと同じディレクトリに "mt.psgi" というファイル名で保存します。
#!/usr/bin/env perl

use strict;
use warnings;
use File::Basename;

use Plack::Builder;
use Plack::App::CGIBin;

builder {
    enable "Plack::Middleware::Static",
        path => qr{^/mt/mt-static}, root => '/path/to/blog';
    mount "/mt" =>
        Plack::App::CGIBin->new( root => '.', exec_cb => sub { 1 } )->to_app;
};
2.plackupで起動
$ cd /path/to/blog/mt

(Plackで動かす場合)
$ plackup   /path/to/blog/mt/mt.psgi

(Starmanで動かす場合)
$ plackup   /path/to/blog/mt/mt.psgi  -s Starman

(Starletで動かす場合)
$ plackup   /path/to/blog/mt/mt.psgi  -s Starlet   
3.動作確認

http://blog.example.com:5000/mt/mt.cgi にアクセスすればMT管理画面が開くはずです。

あとがき

うまく動きましたでしょうか?
パスやURLの設定が人によって違うので、若干てこずるかもしれません。

mt-static/以下のファイルが404 not foundになってしまう場合は、こちらの記事を参考にしてください。
Plack入門:Plackで静的ファイル配信をする方法

ちなみに私はパスの設定に手こずって半日かかってしまいました。
本記事を読んでからやれば、割と簡単にできるかと思います。

Enjoy!

※肝心の動作速度ですが、HTTP+CGIと比べて体感的には全然変わりませんでした。残念。
CGIがボトルネックかと思っていたらそうではなかったようです。

参考

カテゴリ: