スカイアーク様提供の Movable Type用の再構築ツール、www-rebuilder を使ってみたので、設定等の記録です。
用意するもの
- www-rebuilder 本体
- 必須モジュール:WWW::Mechanize
- ターミナルソフト
- 編集用エディタ
MT6で Data APIがでていて記事更新などは管理画面を介さなくてもできるようになっています。特定のテンプレートとなると、ちょっと Data APIではそれらしき、エンドポイントがないみたいです。というか、Data APIと再構築のツールとでは、目的がそもそも違うという。
で、本体のほうは、スカイアークの以下のエントリーにリンクがあります。
なお、GitHubにリポジトリがあるようです。
先に本題的なことをいいますと、そのまま使うと、ファイル mt.cgi に対して、BASIC認証をかけてある場合、基本認証が通らなくてプログラム終了となってしまいました。
... Authorization Required at ./www-rebuilder line 30
ベーシック認証突破するように、オプションコマンドを追加する必要があるようです。
GetOptions (Array) に以下を追加します。
"bauth_name=s" => \my $bauth_name,
"bauth_pwd=s" => \my $bauth_pwd,
(ターミナルで入力するのに手間がかかるので、略してます。basic_authorization_password というような意味です)
サブルーチン do_task()の 一番始めの $mech->get($uri); の上の行に以下を追加します。
# Basic Authorization
$mech->credentials( $bauth_name => $bauth_pwd ) if ( $bauth_name && $bauth_pwd );
あと、自分がおこなった環境だと、WWW::Mechanize の set_fields で checkbox の設定があると、
No such field 'checkbox' at /PATH/TO/WWW/Mechanize.pm
とかでてしまうので、 checkbox => undef, はコメントにしておきました。
編集が終わったら、SSHでサーバーに入って、どこかの /tools/ ディレクトリとか任意の場所にアップロードしておきます。
そのディレクトリに移動します。
$ cd /var/www/html/cgi-bin/tools
サンプルとして必要項目が以下だったとします。
MovableTypeのURL : http://example.com/{MT_SysDir}/mt.cgi
ログインユーザー名 : Melody
ログインパスワード : Nelson
ブログID :1
再構築したいテンプレートのタイプ : index
再構築したいテンプレートID : 1
ベーシック認証ユーザ名 : name
ベーシック認証パスワード : XXXXXXXX
各オプション(-- のあと)の対応は (* は必須)
mt_uri : MovableTypeのURL * username : ログインユーザー名 * password : ログインパスワード * type : 再構築したいテンプレートのタイプ (archive|index) template_id : 再構築したいテンプレートID
※ template_idを指定している時は、type が必須となる、とあります。
ベーシック認証用に以下のオプション
bauth_name : ベーシック認証ユーザ名 bauth_pwd : ベーシック認証パスワード
これを反映させた www-rebuilder でのコマンドラインはこのようになります。
$ ./www-rebuilder --mt_uri=http://example.com/{MT_SysDir}/mt.cgi --username=Melody --password=Nelson --type=index --template_id=1 --blog_id=1 --bauth_name=name --bauth_pwd=XXXXXXXX
(注:サンプルなので、実際の使用ではオプションは環境にあわせた値をいれます)
これで、ターミナルから、curl で再構築したテンプレートのヘッダーをみるか、ブラウザでアクセスするなどして、Last-Modified: を見てみます(GMTの場合は日本時間で+9:00 、計算の面倒ならばブラウザからアクセスしてページ情報みるほうが楽かも)。
$ curl -s --head http://example.com/再構築したテンプレートが生成するファイル
Last-Modifiedが直前の時刻になっていれば成功しているとおもわれます。
以上、 MovableType 6.1.1にて動作確認しました。
元記事にもありますが、十分な検証をおこなったうえで利用しましょう。