Web

MT5で毎日自動再構築まとめ

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を探し出し、実行日時と共に設定→(゚д゚)ウマー

以上!

スポンサーリンク
記事を書いた人

システムえんじにゃー🐈
趣味はエレキギター、自転車など。作曲したい。
World of Warshipsやってます。
記事に関する質問はお気軽にどうぞ。

surface0 (さーふぇす)をフォローする

コメント

タイトルとURLをコピーしました