« PerlのCPANインストール済モジュールの確認 | メイン | 夫婦は「ココロ」の鏡である(BlogPet) »

Ramdom Entry Pickup

cronでMovableTypeを定期的に再構築


完全自動で収益100倍アフィリエイト!MT4(ムーバブルタイプ4)対応版!!

Category : [ Linux, MovableType, 自宅サーバ ]
January 7, 2006 0:26
TAG : [Internet,Linux,MovableType,Plugin,Template,Trackback]





新規エントリー投稿時コメントトラックバック時に、
インデックステンプレート「再構築オプション」チェックがある場合、
その都度再構築されます。

PHPでモジュール化しているとはいえ、インデックステンプレートの数が多いので、
いかんせん時間がかかる。。。


ということで見つけたのがこれ↓

【 mt-rebuild 】


これは、MTの管理画面からではなく、
コンソールから手動、
もしくは「cron」で定期的に指定のテンプレートを再構築してくれる。


では、導入方法をば。。


まず、下記のURLから、「mt-rebuild」をダウンロードして、解凍する。

Code > Appnel Internet Solutions


解凍してできた、「mt-rebuild.pl」を、MTのCGIパスアップロードする。

ファイルのパーミッション「700」に変更。


まずは、コンソールから試してみよう。

例えば、「BlogPeople」というインデックステンプレートがあったとすると、

# /(MTへのフルパス)/mt-rebuild.pl -mode="index" -blog_id=1 -template="BlogPeople"

青字には、そのブログのブログIDを、
赤字の部分には、「テンプレート名」を入れてください。

あくまでも「テンプレート名」です。
「出力ファイル名」ではないですよ!

なお、テンプレート名には日本語(2byteコード)を使うこともできるみたいです。


コンソールでうまく再構築できたら、
「cron」にしこんでみましょう。

4 0 * * * /(MTへのフルパス)/mt-rebuild.pl -mode="index" -blog_id=1 -template="Category-module"

この場合、「Category-module」というインデックステンプレートが、1日1回、4時に再構築されます


私の場合、相当数をこの定期的な再構築にしています。

例えば、カテゴリーリスト表示などは、
カテゴリーをそんな頻繁に増やしたりしませんし、カテゴリー毎のエントリー数なんて、
読者は気にしません(笑)

カテゴリーを増減したときだけ手動で再構築すればいいんです(^^;)

月別アーカイブリストもなども同様です。


と、このように、いろいろなインデックステンプレートを自動で再構築するようにしています。

忘れてはいけないのが、そういう設定にしたインデックステンプレートは、
再構築オプションのチェックをはずしておいてくださいね。


が。。。なぜか、「MT-Notifier」プラグインを入れていると、うまく動かないという。。。なぜ!?



図解でわかるLinux環境設定のすべて
西村 めぐみ
日本実業出版社 (2004/11/30)
売り上げランキング: 3,966
おすすめ度の平均: 4.5
5 GentooLinux,Cygwinに
3 初心者には敷居が高いです
5 Linux初心者にはお勧めです

新Linux/UNIX入門
新Linux/UNIX入門
posted with amazlet on 06.01.07
林 晴比古
ソフトバンククリエイティブ (2004/07)
売り上げランキング: 35,775
おすすめ度の平均: 5
5 最初の第一歩を手助けしてくれます
5 Linux最強入門書!



ソーシャルブックマーク

「del.icio.us」にブックマーク|このエントリーの「del.icio.us」での登録状況|はてなブックマーク|はてなブックマーク|テクノラティ・リンク検索結果|Technorati|BlogPeople Instant Bookmark|BlogPeople Tags|ドリコムRSS|ニフティクリップ|livedoorクリップ|livedoorクリップ|ECナビに登録|add-fc2.gif|FC2ブックマークでの登録状況

このエントリーと関連性が高いと思われるエントリー


このエントリーに関連するかもしれない商品


おすすめ商品


Link Information

Link HTML:

トラックバックURL:

Trackbacks

» cronでどんなことができるのか。 from 無料ブログアフィリエイトで日給8万円

なぜ、cronにこだわっているのか。そもそもcronとは何か。 [Read More]

» WindowsでCron(クローン) from ネットビジネス用CGI Perl HTML Javascriptの情報サイト

UNIXというOSでは、Cron(Command Run ON)という便利な機能があります。

Cronとは、例えば、「毎日この時間に、...

[Read More]

コメント

TB ありがとうございました。

うちでは、MT-Notifierも動かしていますが、(たぶん)どちらも正常に動いていますよ。

>もぐらくん さん

そうなんですか?

どうやら「MT-Notifier」がバージョンアップしたみたいなので、
それでちょっと試してみます。

MTのアップデートが面倒で、まだ3.17-jaを使っていますし、MT-Notifierも2.4.3です。

ですから、あんまり参考になりませんね。ゴメンナサイ。(^^ゞ

BlogPetRingにも登録させてもらいました。今後ともよろしくお願いします。

>もぐらくん さん

どうやらうまくいきました。。。(^^;)

「MT-Notifier」のバージョンのせいなにか、
テンプレートのせいなのかわかりませんが、
原因は不明です(^^;)

始めまして近藤です。
とても有益な情報ありがとうございます。


ひとつ質問させてください。
例えば50ぐらいのブログのメインページだけ一括更新とかできるのでしょうか?


ブログの数が多すぎて一括更新したらサーバーに負荷がかかりそうなきもするのですが。


もしご存知であればアドバイスいただけないでしょうか?
よろしくお願いいたします。


近藤

>近藤さん

コメントありがとうございます。

リビルドのプロセスと、データベースがどのような相関関係になっているかは、
実は私もはっきり理解しているわけではないんです(^^;)


メインページのテンプレートの作りにもよりますが、
同時に50もあるブログのメインページをリビルドするとなると、相当な負荷かと思います。


たとえば、スクリプト等でBlogIDをインクリメントしていく方が堅実なような気がします。

回答ありがとうございます。


>たとえば、スクリプト等でBlogIDをインクリメントしていく方が堅実なような気がします。
私はプログラムなどの知識がなく、この部分が少しわからないのですが、
噛み砕いて教えていただけませんでしょうか?


一応今は-allでやっているのですが、結構サーバーに負荷がかかっていると思います。一応再構築はできるのですが。

>近藤さん

近藤さんがどれだけのものを管理されているのか存じませんが、


# /(MTへのフルパス)/mt-rebuild.pl -mode="index" -blog_id=1

となっている部分のBlogIDの値を、
必要な分だけ、一つずつ増やしていきながらリビルドしていけばいいかと思います。

この場合、blog_idが連番になっている必要がありますが。。。

例えば、1~50のブログであれば、

#!/bin/sh

count=1
while [ $count -le 50 ];
do
 /(MTへのフルパス)/mt-rebuild.pl -mode="index" -blog_id=$count;
done


というシェルスクリプトを作り、
それをcronで動かすとか。

答えになってます?(^^;)

出張に出ていたためお返事が遅れました。丁寧なお返事ありがとうございます。


>近藤さんがどれだけのものを管理されているのか存じませんが、
大体ひとつのMTが200ブログを超えています。
プログラムの知識は全くない私ですが、200を一気に再構築したらまずいということは想像が付きます^^。


># /(MTへのフルパス)/mt-rebuild.pl -mode="index" -blog_id=1
>となっている部分のBlogIDの値を、
必要な分だけ、一つずつ増やしていきながらリビルドしていけばいいかと思います。
200ならこれはちょっと難しいですよね^^。


>例えば、1~50のブログであれば、
#!/bin/sh

count=1
while [ $count -le 50 ];
do
 /(MTへのフルパス)/mt-rebuild.pl -mode="index" -blog_id=$count;
done


>というシェルスクリプトを作り、
それをcronで動かすとか。
これがいけそうです!ありがとうございます。


このプログラムは指定した時間になればID番号1~50のブログを再構築するというプログラムになるんでしょうか?


ということは200なら数時間づつずらして4回やれば負荷の問題など解決できることですよね。


とりあえず少しシェルスクリプトというやつを勉強してみます。


何度もありがとうございます。
近藤

>近藤さん

>大体ひとつのMTが200ブログを超えています。

200ですか(^^;)
す、すごいですね。。。

>このプログラムは指定した時間になればID番号1~50のブログを再構築するというプログラムになるんでしょうか?

これは1~50だった場合で、
これを1~200にしてもかまいませんよ。


まぁ、インデックスだけの再構築ということであれば、
深夜帯とかだったら、一気に200ブログ分やってもかまわないと思いますが(^^;)

たびたび恐れ入ります。近藤です。
早速やってみたのですが再構築されていません。


#!/bin/sh
count=1
while [ $count -le 5 ];
do
 /(MTへのフルパス)/mt-rebuild.pl -mode=all -blog_id=$count;
done


という感じでとりあえず5個やってみようと思ったのですが、うまく再構築されませんでした。


一応indexだけではなく全部のページを更新したいのでallを使ったのですが。。。
少し教えて欲しいのですが、count=1の1というのはID1番のことではなく1づつ繰り返せという意味ですよね?


いろいろ検索で調べて回っていたら教えてくださったプログラムはカウント5まで繰り返せということだと思うのですが、


http://cyberam.dip.jp/linux_command/shellscript/shellscript_main.html


なぜ動かないのでしょうか?ちなみにブログID1は削除したので2からでした。
そんなことは関係ないですかね^^。


わかる範囲で構いませんので教えていただけませんでしょうか?
近藤

>近藤さん

おそらく、
-template=”BlogPeople” 等で、
テンプレート名を指定しないといけないような気がします(^^;)


やりたいのは、結局は、
blog_idに数値を入れて再構築し、
次にblog_idを1増やして再構築する。
という繰り返しになります。

#!/bin/sh
count=1
while [ $count -le 5 ];
do
 /(フルパス)/mt-rebuild.pl -mode=all -blog_id=count
count=`expr $count + 1`
done


上記ではどうですか??


それと、
・どのようにして再構築できていないのか?
・ログにはどのように出力されているか

等々、必要な情報をお願いします。


こちらも手探り状態ではなんともお答えしようがないです。。。。

ありがとうございます。近藤です。
実は昨日サーバーをとめられました(汗)


どうやらcronを1分に設定したまま寝てしまっていたためです。サーバーを駆りなおして再度検証します。


また訪問させていただきますので少しお待ちいただければと思います。
せっかくアドバイスを下さったのにすいません。


近藤

>近藤 さん

了解です。

showbooさん、はじめまして。
添田と申します。

MovableTypeに関する記事を、
読み漁らせていただいています^^

ほんと有益な情報ありがとうございます。

僕も近藤さんと同じようなことをしたいと思っていて、上記のやりとりを見て、やってみました。

しかし、うまくいきません。
rebuild.shという以下のスクリプトをCRONで実行させたのですが、

(ID2と3のブログを再構築)
#!/bin/sh
count=2
while [ $count -le 3 ];
do
 /(フルパス)/mt-rebuild.pl -mode=all -blog_id=$count
count=`expr $count + 1`
done


CRONDaemonからこんなメールが届きました。

/MTのフルパス/rebuild.sh: line 6: ¡¡/MTのフルパス/mt-rebuild.pl: No such file or directory

/MTのフルパス/rebuild.sh: line 6: ¡¡/MTのフルパス/mt-rebuild.pl: No such file or directory

mt-rebuild.plのパーミッションは700です。
ディレクトリもファイル名も間違っていません。

もし、原因がわかりましたら教えていただけないでしょうか?


>添田さん

ためしに「mt-rebuild.pl」のパーミッションを「755」にしてみてもらえますか?

cronの実行ユーザーが異なっているかもしれません。

showbooさん、添田です。

シェルスクリプトのパーミッションが644になっていたため、700に変更したところうまくいきました。

お聞きするまでもないことで、お手数をおかけして申し訳ありませんでしたm(__)m

有益な情報ありがとうございました。

>添田さん

なるほど。
参考になれば幸いです(^^;)

コメントする