CPIの「シェアードプラン ZZ-01」についての話。
他のサーバーでもだいたい同じかと。
前置きとして、MovableType5には標準で自動的に再構築する機能はありません。
公開予約をした記事を公開日時が過ぎたら公開するという処理をcronによって実行することはできます。
なのでcronから叩いてサイト全体を再構築を出来るようにするのが今回の目的です。
再構築スクリプトの入手
MTのtoolディレクトリになにやら「rebuild-pages」というファイルがあるのですが、サーバの制限上モジュール不足などでちょっと使えそうにありません…
ですので、定番の「mt-rebuild.pl」を下記のリンクから入手します。
TypePadへのサインインが必要です。
mt-rebuild / Code / The Appnel Group
そしたら、mt-rebuild.plをmtディレクトリにコピーして、cronユーザが実行できるようにパーミッションを755にします。
ただ、これだけではcron設定するには色々不完全なので、手を加えていきます。
カスタムフィールドへの対応
mt-rebuild.plはいささか古いやつでMT3時代のものです。
なので、当時は存在しなかったカスタムフィールドを持つブログは再構築できません。
そこで下記サイトを参考にコードを一部修正。
mt-rebuild.plをカスタムフィールドの再構築に対応させる – The blog of H.Fujimoto
# mt-rebuild.pl(修正前)
use MT;
my $mt = MT->new( Config => $MT_DIR . 'mt.cfg',
Directory => $MT_DIR )
|| die MT->errstr;
# mt-rebuild.pl(修正後)
use MT::App;
my $mt = MT::App->new( Config => $MT_DIR . 'mt-config.cgi',
Directory => $MT_DIR )
|| die MT::App->errstr;
ウェブサイトの再構築へ対応
MT3の時代にウェブサイトなんて概念ありませんでした。
なので、また同じ方の記事を参考にして、修正を加えます。
mt-rebuild.plをウェブサイトの再構築にも対応させる – The blog of H.Fujimoto
# mt-rebuild.pl(修正前)
my $iter = MT::Blog->load_iter;
# mt-rebuild.pl(修正後)
my $iter = MT::Blog->load_iter({ class => '*' });
これでSSHのシェルから試しに実行してみます。
%cd /path/to/mt
%./mt-rebuild.pl -all
なんか警告とかでるかもしれないけども、再構築自体はうまくいくかと思います。
ただし、テンプレート別の再構築などには対応しきれていないと思われますが、それについては今回はオミットとします。
cron用スクリプトを書く
もうアホかと。
cronの実行では引数が指定できません。
なのでシェルスクリプトファイルを用意します。パーミッションはもちろん755で。
mt-rebuild.sh
#!/bin/sh
/usr/home/path/to/mt/mt-rebuild.pl -all
こんな感じで。cdは使えないとかで、フルパスじゃないといけないらしいです。
あとは「スクリプト定期実行ツール」で幾多もの候補の中からmt-rebuild.shを探し出し、実行日時と共に設定→(゚д゚)ウマー
以上!
コメント