cronとrebuild-pagesを使って定期的にMovableTypeを自動で再構築する

現在、heteml(ヘテムル)のサーバーでMovabletype6(MT6)を使っています。

ムーバブルタイプの再構築を毎日決まった時間に再構築できないかいろいろ調べていたところ、mt-rebuild.plを使用した方法がたくさん検索でヒットしました。ところが現在はファイルを入手できない状況になっているようで、別の方法を検討することにしました。そこでMovabletypeに元々あるrebuid-pagesというファイルを使った方法がありましたのでメモ。

cronによる再構築のスケジュールを設定してみました。cronの設定までに以下のファイルが必要です。

rebuild-pages
(MT6に元々ある再構築用スクリプト用のファイル)
mt.sh
(cronに登録するrebuild-pagesを実行させるためのもの)
Local.pm
(MTになくrebuild-pagesに必要なものでテキストエディタで作成)

 

rebuild-pagesの設定

rebuild-pagesというファイルはmt/tool/にあります。このファイルを開いて再構築に必要な項目を入力します。

### Parses options.
my @blog_ids;
my @types;
my $username    = 'MTのユーザー名';
my $password    = 'MTのパスワード';
my $script_path = '/mt/';
my $hostname    = 'hoshiya.biz'; ←ホスト名(ドメイン名)
my $silent      = 0;
my $usage       = 0;
my $elapse      = 0;

rebuild-pagesの最後の方のソースを見ればわかりますが、オプションを加えることによりblog_IDやカテゴリページやインデックスページのみを再構築するなど、細かく指定することもできるようです。

 

mt.shを用意

テキストエディタで以下のソースをmt.shと名前を付けて保存します。(ここでは仮にmt.shとしていますが、.shという拡張子であれば名前はなんでもいいです。)

#!/bin/sh

cd /home/sites/heteml/users***/m/h/0/ヘテムルのユーザー名/web/hoshiya.biz/mt/
/usr/bin/perl ./tools/rebuild-pages

exit

リビルドに必要な項目はrebuild-pagesで設定しなくても、コマンドで設定することもできるようです。

/usr/bin/perl ./tools/rebuild-pages --user=MTのユーザー名 --pass=MTのパスワード

その他、指定できるパラメータは以下のページが参考になります。

 

mt.shをアップロード

/home/sites/heteml/users***/m/h/0/ヘテムルのユーザー名/にアップロードします。パーミッションは700ヘテムルの場合)にします。

違うディレクトリにアップロードすると以下のようなエラーメールが届いて動きませんでした。

/bin/sh: /home/sites/heteml/users/m/h/0/****/web/hoshiya.biz/mt.sh: /bin/sh
: bad interpreter: No such file or directory

 

Local.pmを作成とアップロード

rebuild-pagesでLWP::UserAgent::Localというモジュールが必要らしいのですが、標準ではないのでmt/lib/の中にLWP/UserAgent/Local.pmを作ります。

LWP/UserAgent/Local.pm

Local.pmのソースは「movabletype/t/lib/LWP/UserAgent/Local.pm at master · movabletype/movabletype · GitHub」を使いました。

Local.pmの2行目あたりに以下を追記します。

package LWP::UserAgent::Local;

use lib qw(../lib ../extlib); ←これ

または

use lib qw(
    /home/sites/heteml/users***/m/h/0/ヘテムルのユーザー名/web/hoshiya.biz/web/mt/lib
    /home/sites/heteml/users***/m/h/0/ヘテムルのユーザー名/web/hoshiya.biz/web/mt/extlib
);

use LWP::UserAgent;
use base 'LWP::UserAgent';
use IPC::Open2 'open2';

このパスの指定がないとうまく動きませんでした。

 

cronを設定

ヘテムルのコントロールパネルのcron設定のページでスケジュールで登録します。毎日朝4:00に再構築するように設定して終了。

ヘテムル-cronについて

無事、毎日4時に再構築してくれています。

ヘテムル以外のサーバーでこれでもダメだった場合は以下のページのことも合わせてやってみてください。

参考にしたページ