印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
MovableType Apache2+mod_perl2 で MT-Preview が動かない

Apache2+mod_perl2 で Movable Type 2.661 が動くようになったのはいいのだが,MT-Preview Plugin が動かなくなってしまった。

■ ■ ■

Apache2+mod_perl2 で Movable Type 2.661 が動くようになって喜んでいたのだが (nlog(n): Apache2+mod_perl2 で MovableType 2.661),1つ問題が発生した。記事のプレビューに使っている MT-Preview Plugin が動作しなくなってしまったのだ。このプラグインは,公開前の記事をプレビューする際に,公開したときのレイアウトが適用されるというもので,10 Goto 10: MT-Preview: WYSIWYG Preview Mode for Movable Type で公開されていたが,現在はサイト毎消失している。プラグインのファイル名は MT-Preview-1_0.zip なので,どこかのサイトにひっそりと残っていないか探してみたのだが,どこにもない。ロシアの怪しいサイトにも残っていなかった。[Movable Type]編集中のエントリー(記事)を一般公開する前に、本番通りの見た目でプレビューするプラグイン2点 : アークウェブ ビジネスブログ によれば,2006年の時点でサイトが消失しているとのこと。

さて,MT-Preview の動作状況としてはどのようなものかと言うと,mt-preview.cgi を呼ぶと,プレビュー用の新規ウィンドウが一瞬開いてすぐに閉じ,デスクトップに mt-preview.cgi というファイルがダウンロードされる。内容は次のようなものである。

Got an error: Can't locate Laurentm/Preview.pm in @INC (@INC contains: /usr/sbin/extlib /usr/sbin/lib /usr/lib/perl5/5.8.6/i386-linux-thread-multi ...) at mt-preview.cgi line 35.

MTPath の extlib の中のモジュールが探せていない。/usr/sbin/extlib を探してしまっている。そこで,httpd.conf の中に次のようにしてパスを追加した。

<IfModule mod_perl.c>
PerlOptions +Parent
PerlSwitches -I/home/httpd/html/opentype/lib
PerlSwitches -I/home/httpd/html/opentype/extlib
...

Apache2::Status で確認すると,PerlSwitches で指定したパスが @INC に追加されている。この状態で,もう一度 mt-preview.cgi にアクセスすると,今度は次の内容の mt-preview.cgi ファイルがダウンロードされた。

Got an error: Error opening config file '/usr/sbin/mt.cfg': そのようなファイルやディレクトリはありません

今度は mt.cfg を違う場所で探してしまっている。困った。

しかし,mt-preview.cgi の中身を覗いてみると,mt.cgi と内容がほぼ同じであることが分かった。mt.cgi の

eval {
    require MT::App::CMS;
    my $app = MT::App::CMS->new( Config => $MT_DIR . 'mt.cfg',
                                 Directory => $MT_DIR )
        or die MT::App::CMS->errstr;
    local $SIG{__WARN__} = sub { $app->trace($_[0]) };
    $app->run;
};

の部分が,

eval {
    require Laurentm::Preview;
    my $app = Laurentm::Preview->new( Config => $MT_DIR . 'mt.cfg',
                                      Directory => $MT_DIR )
        or die Laurentm::Preview->errstr;
    local $SIG{__WARN__} = sub { $app->trace($_[0]) };
    $app->run;
};

になっているだけである。したがって,mod_perl2 化したときの mt.cgi へのパッチ当てと同じ変更をしてやればよい (パッチファイルはこちら→mt-preview-1.0.diff)。

これで MT-Preview Plugin も動作するようになった。

Posted by n at 2008-08-03 02:15 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?