Movable Type 備忘録

 RebuildQueue プラグイン

こんにちわ^^

今、せっせと MovableType 4 で動作するプラグインの確認してます (; ̄∇ ̄A
面倒くさがりのわたしには苦痛の作業です (´Д`;) なので、チョビッと確認しては遊んで・・・の繰り返しです♪

とりえあず、確認したプラグインはこちらのMovableType 4 beta5 レビューで一覧にしてます。
わたしのサイトで「使えないと困る」順で確認してます (; ̄∇ ̄A はは

さて、今回ご紹介するのは久しぶりに MovableType のプラグインです。
以前から使ってたものですが、RebuildQueue というプラグインが Six Apart Plugin Repository に公開されていたので使っていたものです。

どんなプラグインかというと、通常では新規エントリを公開するときに再構築されますね。
このとき、データベースへ保存して、関連するアーカイブ(前後のエントリ・ページとか、カテゴリ・ページなど)とか、インデックス・テンプレートなども再構築されて、最後に ping サーバへ送信・・・という手順を踏みますね。

これらの作業はとっても時間かかりますよね。
そこで RebuildQueue プラグインをインストールすることで、新規エントリ投稿時はデータベースへの保存のみで、後から TELNET( or SSH)から再構築したり、cron を使ったりして再構築させることができるようになります。

要するに作業を分割することができるプラグインです。
という内容のことを、Ogawa::Memoranda さんのところ(RebuildQueue二題)でもっと技術的なことを説明されてます。また、この RebuildQueue プラグインは MovableType 4 に対応してないということでしたが、対応したプラグインも公開されてましたので、さっそく更新してみました。

ディレクトリ構成

  1. http://●●●.com/mt/
  2.   +-- mt-static/
  3.   | +-- plugins/
  4.   | | +-- RebuildQueue/
  5.   | | | +-- rebuildq.gif
  6.   |
  7.   +-- plugins/
  8.   | +-- RebuildQueue/
  9.   | | +-- lib/
  10.   | | | +-- RebuildQueue/
  11.   | | | | +-- Daemon.pm
  12.   | | | | +-- File.pm
  13.   | | | | +-- Plugin.pm
  14.   | | | | +-- Publisher.pm
  15.   | | | | +-- PublisherV4.pm
  16.   | | |
  17.   | | +-- tmpl/
  18.   | | | +-- queue_list.tmpl
  19.   | | | +-- queue_table.tmpl
  20.   | |
  21.   | +-- RebuildQueue.pl
  22.   | +-- RebuildQueue-List.pl
  23.   | +-- restart_rebuild_queue.sh

RebuildQueue プラグインの使い方

このサイトで使ってる 'さくらインターネット' では幸い cron が使用可能ですが、ここでは cron が使えない環境の場合のご紹介をします。
てか、わたしもエントリ投稿のために cron は使ってませんけど (; ̄∇ ̄A

  1. まず RebuildQueue プラグインをインストールします。
    RebuildQueue MT4 を入手してください。
    そして、上記ディレクトリ構成のようにアップロードします。

  2. 次に RebuildQueue プラグインの設定を行います。
    MovableType の管理画面から RebuildQueue による再構築を行いたいブログのプラグイン一覧を表示してください。
    システム・メニューにあるプラグイン一覧ではないのでご注意ください。

    そして、右横にある「設定を表示」をクリックします。
    現在わたしが設定している内容を以下に記します。

    • 「Check to allow this weblog to be rebuilt using the Rebuild Queue.」
      チェックします。今まで通りにエントリ投稿時に再構築したい場合にはここのチェックを外します。

    • 「Uncheck to push all pages to Rebuild Queue, regardless of context. If Checked, manual rebuilds will circumvent the RebuildQueue.」
      チェックします。

    設定したら「変更を保存」をクリックして保存してください。

  3. 次にわたしが使ってる、以下のスクリプトをコピペしてファイル(たとえば、mt-rebuildq.php)に保存します。

    1. <?php
    2. if (!isset($_REQUEST['任意のキーワード'])) return;
    3.  
    4. echo '<pre>';
    5. $cmd = './plugins/RebuildQueue/RebuildQueue.pl';
    6. $last_line = system($cmd, $retval);
    7. echo '</pre><hr />Last line of the output: ' . $last_line . '<hr />Return value: ' . $retval;
    8. ?>

    青い字の部分をお好きなキーワードに変更してください。
    たとえば、'bzbell' などでも構いません。

    そしてサーバにアップロードします。 アップロード先は mt.cgi と同じ場所にアップロードします。
    他の場所でも問題ありませんが、その時は先ほどのスクリプトの 6行目の パスを変更します。

    また、各自の環境に合わせてパーミッション(たとえば、705)も変更します。

  4. 最後に動作確認します。
    ブラウザからアップロードした mt-rebuildq.php を以下のように実行してみてください。

    1. http://●●●/mt/mt-rebuildq.php?任意のキーワード=1

    赤い字の部分は先ほど変更した任意のキーワードを指定します。
    エラーらしきメッセージが表示されてないようでしたら問題ないかと思います。

以上で完了です。
MovableTypeの管理画面から再構築するより、RebuildQueue プラグインによる再構築の方が格段に早いので試してみてくださいな ( ̄∇ ̄)/

あと、Ogawa::Memoranda さんのところで、上記スクリプトを使わなくても、自動的に RequildQueue を実行する、RebuildQueueRunner プラグインが紹介されてます。
わたしはまだ試してませんが、スクリプト実行という手間!? が省けるのでよろしいかと。

 Trackback Pings(0)

No trackbacks found.

 Comments(7)

#1: Posted by Author Profile Page すら @ June 26, 2008 [REPLY]
user-pic

初めまして、bzbellさん。すらと申します。
いつも、MovableTypeのカスタマイズのエントリーを中心に拝見させていただいております。とても実用的で、また応用することで更に用途を広げることができるようなエントリーをありがとうございます。いつも大変助けられてます。

今回、ご相談したかったのは、MT4以降でcronによるMTの自動再構築を実現する方法を、もしご存知でしたら教えていただきたかった為です。mt-rebuilも使えるのかも知れないと思いつつ、バージョンの関係から躊躇しております。また、ほかにも何点かプラグインでMT4対応で該当するような処理を行うものもありましたが、不具合が起きてしまったり、思うような結果が得られませんでした。
そこで、本来の使用方法ではないのかも知れませんが、RebuildQueueプラグインで、cronによる自動再構築を行うことができるというような情報をおききしたのですが、もしbzbellさんがお知りでしたらと思い連絡いたしました。(公開キューのように、エントリーの保存と構築を2フェーズに分けて行うというものではなく。)

行いたいのは、複数ブログ(ブログ1,ブログ2,ブログ3,・・・)と設置している中で、ブログ1(のできればインデックステンプレートのみ)を毎日指定した時間に一日に一度再構築をかけるというような動作です。

お忙しいかと存じますが、もし、何かご存知でしたらどうぞよろしくお願いいたします。
失礼いたします。

#2: Posted by Author Profile Page bzbell @ June 29, 2008 [REPLY]
user-pic

>>1 すら さん

> 行いたいのは、複数ブログ(ブログ1,ブログ2,ブログ3,・・・)と設置している中で、ブログ1(のできればインデックステンプレートのみ)を毎日指定した時間に一日に一度再構築をかけるというような動作です。

mt-rebuild なら すら さんが希望することはできると思います。
ですが、RebuildQueue プラグイン( MT4 からはデフォルトで組み込まれた )ではそのようなことができるかはやったことないですね。

mt-rebuild は MT4.1 なら使えることを確認してますが、MT4.2 では残念ですが使用できませんでしたグウグウ

mt-rebuild の代替として mt/tools/rebuild-pages を利用してみようと考えてますが、どうもうまくいきませんあせあせ
以下にわたしがやった手順を記します。

  1. Local.pm を入手します。
    rebuild-page は Local.pm というライブラリをロードしてます。以下から入手することができます。

    http://code.sixapart.com/svn/movabletype/trunk/t/lib/LWP/UserAgent/Local.pm
    

    入手した Local.pm を mt/extlib/LWP/UserAgent/Local.pm に保存します。

  2. rebuild-page を変更します。
    rebuild-page 内に Local.pm ライブラリをロードできるようパスを通します。

    use lib qw(../extlib);
    

以上です。
tools/rebuild-pages ではパラメータとして、MT のログイン名、パスワードを指定して実行します。

cd mt/tools
./rebuild-pages ユーザ名 パスワード

そうすると、現状わたしの方では入手した Local.pm 内でエラーしてます。
このエラーを解決できれば、mt-rebuild のように再構築するテンプレートも任意だし、ブログの指定も可能です。
また、特定のエントリ ID を指定することが OKサングラス

#3: Posted by Author Profile Page bzbell @ June 30, 2008 [REPLY]
user-pic

>>1 すら さん

すいません、mt-rebuild の件ですが、MT4.2 でも使えましたあせあせ
わたしの場合あるプラグインが影響して使えてなかったようです。
そのプラグインを削除したら再構築できました。

ご参考までにテレテレ

#4: Posted by すら @ June 30, 2008 [REPLY]
user-pic

bzbellさん、お忙しい中お返事いただき、大変感謝しております。
当方で使用しているMTのバージョンが4.1ということもあり、mt-rebuildを使用することを
考えておりましたが、残念ながら公式ページからダウンロードすることができませんでした。
(公式ページから、サインインしてダウンロードのページまでは行きますが、ファイルダウンロード
のリンクを押すとエラーが出てダウンロードできませんでした。)

ですので、代替案としてのmt/tools/rebuild-pages につきまして、
こちらでも試してみたいと考えております。
その際には、またお尋ねしてしまうかもしれませんが、よろしくお願いいたします。
どうも、ありがとうございました。

#5: Posted by Author Profile Page マサール @ November 11, 2008 [REPLY]
user-pic

いつも参考にさせて頂いております。

RebuildQueueプラグインは愛用していたのですが
MTのバージョンアップ(4.22)をした所 使えなくなってしまいました・・。
具体的にはプラグインは認識されますが、
mt-rebuildq.phpを実行しても再構築が実行されないという状況です。

bzbell様も4.22をお使いのようですが、RebuildQueueの使用は普通にできていますでしょうか?


#6: Posted by Author Profile Page bzbellからマサールへの返信 @ November 11, 2008 [REPLY]
user-pic

>>5 マサール さん

こんばんわ^^

> ・・・MTのバージョンアップ(4.22)をした所 使えなくなってしまいました・・。

MT4.22 になって使えなくなったプラグインもチラホラありますので、RebuildQueue もダメなのかもしれませんね。
わたし MT4 になってからは公開キューが使えるので RebuildQueue は使ってないんですワクワク
デフォルトの公開キューを使ったらダメですか!?
基本的には同等ですよ。
http://bizcaz.com/archives/2007/08/05-003342.php

#7: Posted by Author Profile Page マサール @ November 12, 2008 [REPLY]
user-pic

お返事ありがとうございます。

公開キューの存在は知っていたのですが、
cron?とかそのあたりのことがさっぱりだったので
手をだしていませんでした。あせあせ

いろいろ調べて
無事公開キューで同じように再構築することができました。

ありがとうございました!

 Post a Comment

 

コメント用フィード