Mixhostで運用中のMovable Typeの再構築をCronジョブで定期的に自動で行う方法
目次
Mixhost のレンタルサーバーで運用しているMovable Typeの再構築をCronジョブを使って、深夜に自動的に行いたいときの方法をメモ。
Cronジョブに登録
Mixhost の [cPanel]-[Cronジョブ] の画面に以下のようにコマンドを登録していきます。
登録例
以下は「毎日03:45分にカテゴリアーカイブを再構築」するときのコマンド設定例です。
コマンド例
rebuild-pages という Movable Type にあるスクリプトファイルを使って再構築を行います。パラメータを加えることによって部分的に指定して再構築を行うことができます。
再構築の内容 | コマンド |
---|---|
すべて再構築 | /usr/bin/perl /home/ze****ju/public_html/domain.name/mt-folder/tools/rebuild-pages |
ブログ記事を再構築 | /usr/bin/perl /home/ze****ju/public_html/domain.name/mt-folder/tools/rebuild-pages --type=Individual |
月別ページを再構築 | /usr/bin/perl /home/ze****ju/public_html/domain.name/mt-folder/tools/rebuild-pages --type=Monthly |
カテゴリアーカイブを再構築 | /usr/bin/perl /home/ze****ju/public_html/domain.name/mt-folder/tools/rebuild-pages --type=Category |
インデックステンプレートとウェブページアーカイブを再構築 | /usr/bin/perl /home/ze****ju/public_html/domain.name/mt-folder/tools/rebuild-pages --type=index --type=Page |
これ以外に複数のブログがあったりする場合は記事下の参考ページにブログIDを指定する方法などが書かれています。
ユーザー名とパスワードを指定したコマンドの例
以下のように、あらかじめMTにログインする際のユーザ名とパスワードをコマンドに含めておけば、下の方にもある rebuild-pages での事前設定が不要です。
/usr/bin/perl /home/ze****ju/public_html/domain.name/mt-folder/tools/rebuild-pages --user=ユーザー名 --pass=パスワード --silent その他のオプション
Cronジョブで再構築が成功した場合のメール
メールアドレスを登録しておくと、Cronジョブが実行されるたびに結果のメールが届きます。
以下のメールはインデックステンプレートとウェブページアーカイブの再構築に成功した場合ですが、メールの本文に success の文字が入ったメールが届きます。
Perlモジュールが足らなくて失敗した場合
Perlモジュールが不足してCronジョブが失敗したときは以下のようなメールが届きます。ここでは Web::Scraper というPerlモジュールが足りませんので、 [cPanel]-[Perlモジュール] の画面から Web::Scraper をインストールします。
パスの指定が間違っていて失敗した場合
以下の場合、 Local.pm というファイルの94行目にあるパスが正しく /home/ze****ju/public_html/domain.name/mt-folder/tools/ になっていないというメールです。
mt-folder/lib/LWP/UserAgent/Local.pm を開いてパスを toolsフォルダ までの /home/ze****ju/public_html/domain.name/mt-folder/ に変更します。以下は正しく変更したときのソースですが、88行目にも同じようなソースがありますので、ここにあるパスも同じものに変更します。(※Local.pmはMTにはデフォルトで存在していないファイルです。ページの下の方に準備する方法を記載しています。)
大前提としての基本準備
最初に書くべき内容かもしれませんが、ここでは以前に他のレンタルサーバーでCronジョブによる再構築を行っていたものを Mixhost で行うとしたらどうやって設定すればいいかをメインにしていますので、後に書きました。Cornジョブを登録すれば簡単に自動で再構築ができるというもではありません。MTにいくつかの設定とPerlモジュールのインストールが必要です。
Web::Scraper のインストール
上にも書いていますが、Perlモジュールの Web::Scraper が必要です。Web::Scraper を [cPanel]-[Perlモジュール] から検索して Mixhost にインストールしてください。
rebuild-pages の基本設定
rebuild-pages は再構築を行うためのスクリプトファイルです。ここに以下の初期設定が必要です。
ファイルの場所 | /home/ze****ju/public_html/domain.name/mt-folder/tools/ |
ファイル名 | rebuild-pages (拡張子なしのファイル) |
2行目に追記 | use cPanelUserConfig; (※レンタルサーバーがMixhostの場合に必要) |
$username | MTの管理画面にログオンするときのユーザー名 (※コマンドに直接指定している場合は不要) |
$password | MTの管理画面にログオンするときのパスワード (※コマンドに直接指定している場合は不要) |
$script_path | MTフォルダのパス (例:/mt-folder/ ※不要かも?) |
$hostname | ドメイン名 (例:qwerty.work ※不要かも?) |
LWP::UserAgent::Localの設置
ebuild-pages が必要としている LWP::UserAgent::Local がMTには標準ではないので、以下より Local.pm のソースをダウンロード(ソースをコピー)します。
ソースをテキストエディタに貼り付け、Local.pmというファイル名で保存します。保存場所は以下のようになるよう、フォルダを作成して保存します。
/mt-folder/lib/LWP/UserAgent/Local.pm
Local.pmの基本設定
Local.pm はそのまま使うとエラーになるので、以下の追記が必要です。
use lib qw(../lib ../extlib);
あとは上の方でも書きましたが、 94行目 あたりに MTフォルダ までのパスを挿入することが必要です。もっとスマートな書き方があると思うのですが、Perl はよくわからないのでいい書き方が見つかれば修正した方法を掲載したいと思います。
以前書いた参考記事
以前、他のサーバーでCronジョブによる再構築を行ったときに書いたページ。