再構築不要化カスタマイズ(MT3.3専用版・不具合修正&FastCGI対応)

2008年6月6日
Movable Type 4.2をお使いの方は、4.2専用版をご利用ください。

2007年3月10日
デバッグ用のコードが一部残ったままになっていました。
2007年3月10日午前11時30分までにプラグインをダウンロードされた方は、お手数ですが再度ダウンロードいただき、「PerlDynamic.pl」を差し替えてご利用ください。

Movable Type 3.3専用版のPerl版ダイナミック・パブリッシングのプラグインをバージョンアップしました。

複数のBlogを運用する場合に不具合が出ることがありましたので、その点を修正しています。
また、Movable Type 3.34で使う場合は、再構築処理をFastCGI化して、ページの表示速度を上げることができます。

1.不具合の修正点

これまでのPerl版ダイナミック・パブリッシングには、以下のような不具合があるという指摘を受けました。

複数のBlogを運用していて、それらのBlogどうしで、ページのアドレスのドメイン名以下の部分が同じになっているページがあると、ページが正しく出力されない。

例: 2つのBlogを「http://www.foo.com」と「http://www.bar.com」のドメインで運用するようにした場合に、「http://www.foo.com/somepage.html」と「http://www.bar.com/somepage.html」のようなページがあると、ドメイン名以下の「somepage.html」が重複しているので、ページが正しく表示されない。

この点を修正しています。

2.プラグインのダウンロードと解凍

Perl版ダイナミック・パブリッシングのプラグインは、以下のアドレスからダウンロードします。

PerlDynamic_3_10.zip

プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。

また、このプラグインの他にも、いくつかのプラグインを配布しています。
配布中のプラグインは、Movable Type Plugin Directoryのページをご参照ください。

Movable Typeのプラグイン開発等のドキュメント「Movable Type Developer's Guide Volume 1」も販売しています。
ご自分でプラグインを作ってみたい方に、ぜひお勧めしたい一冊です。
詳細は特設ページをご覧ください。

ファイルをダウンロードしたら、解凍しておいてください。
ただし、この時点ではまだアップロードは行いません。

3.全SQL対応版からバージョンアップする場合の準備

これまでに、全SQL対応版のPerl版ダイナミック・パブリッシングを利用していた場合、バージョンアップの前に準備の作業が必要です。

まず、MySQLまたはPostgreSQLでデータベースを管理している場合は、既存のキャッシュ用テーブルをデータベースから削除します。
手順は以下の通りです。

  • 2.の手順で解凍したものの中に、「mt-dpcache-drop.php」というファイルがありますので、そのファイルをメモ帳等で開き、内容をすべてコピーします。
  • Movable Typeにログインして、Perl版ダイナミック・パブリッシングを利用しているBlogで、インデックス・テンプレートを新規作成します。
  • インデックス・テンプレートの名前と出力ファイル名を「mt-dpcache-drop.php」にし、「テンプレートの内容」の欄に、先程コピーしておいたmt-dpcache-drop.phpの内容を貼り付けます。
  • ここまででできたインデックス・テンプレートを保存し、再構築します。
  • 再構築されたページにアクセスすると、既存のキャッシュ用テーブルが削除されます。
  • mt-dpcache-drop.phpのテンプレートを削除し、またBlogの出力先ディレクトリからもmt-dpcache-drop.phpを削除しておきます。

また、データベースの種類に関係なく、以下の作業を行います。

  • 各ブログから「dynamic_init.pl」と「mt-dpcache-load.php」のテンプレートを削除します。
  • 各ブログの出力先ディレクトリから、「mt-dynamic.cgi」「dynamic_init.pl」「mt-dpcache-load.php」のファイルを削除します。
  • Movable Typeの「plugins」ディレクトリから、「GetConfig.pl」ファイルを削除します。

4.プラグインのインストール

次に、Perl版ダイナミック・パブリッシングのプラグインをインストールします。
先程解凍したファイルの中に、「plugins」のフォルダがあります。
そのフォルダを丸ごと、Movable Typeのインストール先ディレクトリにアップロードします。

これで、Movable Typeの「plugins」ディレクトリの中に、「PerlDynamic」というディレクトリができます。
その中にある「mt-perl-dynamic.cgi」と「mt-perl-dynamic-setup.cgi」のパーミッションを「755」などに変えて、実行可能にします。

なお、Movable Type 3.3では、プラグインの日本語化対応機能があり、このプラグインではその機能を利用しています。
そのため、Movable Typeの設定をutf-8以外にしていても、ファイルをアップロードする際には文字コードを変えないでください

5.データベースの初期化

このプラグインをアップロードした後、初めてMovable Typeにログインする際には、以下のページが表示されます。
「アップグレードの開始」ボタンをクリックすると、データベースにテーブルが追加されます。

↓Movable Typeのアップグレード
Movable Typeのアップグレード

アップグレードが終わると、以下の表示になります。

↓アップグレード完了
アップグレード完了

6.FastCGI化の設定

FastCGIに対応したサーバーをお使いの場合は、Perl版ダイナミック・パブリッシングをFastCGI化することができます。

まず、サーバーにアップロードした「mt-perl-dynamic.cgi」の拡張子を、FastCGIの拡張子に変えます。
例えば、「.fcgi」の拡張子のファイルをFastCGIとして動作させるように設定している場合、「mt-perl-dynamic.cgi」を「「mt-perl-dynamic.fcgi」にリネームします。

次に、プラグインの設定で、「mt-perl-dynamic.cgi」の拡張子を指定します。
システムメニューのプラグイン一覧のページを開き、「Dynamic publishing by Perl」のプラグインの箇所で「設定を表示」のリンクをクリックします。
これで設定を行う状態になりますので、「mt-perl-dynamic.cgiの拡張子」の欄で、FastCGIの拡張子を設定します。
例えば、「.fcgi」の拡張子のファイルをFastCGIとして動作させるように設定している場合、この欄に「fcgi」と入力します。拡張子の前の「.」は入力しません。

↓mt-perl-dynamic.cgiの拡張子の設定
mt-perl-dynamic.cgiの拡張子の設定

7.ダイナミック・パブリッシングをオンにする

次に、Movable Typeのダイナミック・パブリッシングの機能をオンにします。

ダイナミック・パブリッシングにしたいBlogで、「設定」ページの「公開」タブを開き、「公開」の部分で「テンプレート別に、スタティックHTMLもしくはダイナミック・パブリッシングを選択します」をオンにして、「変更を保存」ボタンをクリックします。

↓ダイナミック・パブリッシングをオンにする
ダイナミック・パブリッシングをオンにする

8.Perl版ダイナミック・パブリッシングの初期化

次に、Perl版ダイナミック・パブリッシングを初期化します。

ダイナミック・パブリッシングにしたいBlogで、「設定」ページの「プラグイン」タブを開き、プラグイン一覧の「PerlDynamic」のところで「設定を表示」をクリックします。
すると、「初期化する」というリンクが表示されますので、それをクリックします。

↓「初期化する」のリンクをクリックする
「初期化する」のリンクをクリックする

初期化が終わると、以下のようなメッセージが表示されます。

↓初期化完了時のメッセージ
初期化完了時のメッセージ

なお、初期化では以下のような処理が自動的に行われます。

  • .htaccessファイルの書き換え
  • mt-dynamic.phpテンプレートの作成と再構築
  • SQL用テンプレート(sqlsub_mysql.phpまたはsqlsub_pgsql.php)の作成と再構築

9.Perl版ダイナミック・パブリッシングの設定

次に、Perl版ダイナミック・パブリッシングを設定します。

初期化完了のページで、「このリンクをクリックして、設定を続けてください。」をクリックすると、設定ページに移動します。
また、ブログの「設定」ページの「プラグイン」タブでPerl版ダイナミック・パブリッシングの「設定を表示」をクリックし、その中の「設定を行う」のリンクをクリックしても、設定ページを開くことができます。

設定ページでは、以下の点を設定します。そして、設定が終わったら、「設定を保存」のボタンをクリックします。

・インデックスページのファイル名
メインページとアーカイブページのファイル名を指定します。
初期値は「index.html」ですが、BlogをPHP化している方は「index.php」に変えてください。

・ページが見つからないときの移動先のURL
間違ったアドレスのページに接続されたときには、エラーページに転送することができます。
その機能を使いたい場合は、この欄にエラーページのURLを入力します。
なお、この欄を空欄にした場合、間違ったアドレスに接続されたときには、「ご指定のアドレスのページは見つかりませんでした。」というメッセージが表示されます。

・キャッシュの設定
Movable TypeのデータをMySQLかPostgreSQLに保存している場合、ページのキャッシュ機能を使うことができます。
キャッシュ機能を使いたい場合は、「キャッシュを使う」のチェックをオンにします。
また、キャッシュをオンにする場合、「キャッシュの容量」の欄で容量も指定することができます。

↓Perl版ダイナミック・パブリッシングの設定
Perl版ダイナミック・パブリッシングの設定

10.ダイナミック・パブリッシングにするテンプレートを選ぶ

次に、インデックス・テンプレートとアーカイブ・テンプレートの中で、ダイナミック・パブリッシングにしたいものを選びます。
対象のテンプレートを開き、ページ右上の方にある「このテンプレートをダイナミック・ページにする」のチェックをオンにして、テンプレートを保存します。

↓このテンプレートをダイナミック・ページにする」のチェックをオンにする
Perl版ダイナミック・パブリッシングの設定

11.Blog全体を再構築する

ダイナミック・パブリッシングにするテンプレートを選び終わったら、Blog全体を再構築します。
これ以後は、各ページがダイナミック・パブリッシングで出力されます。

なお、再構築後にBlogの出力先ディレクトリを見ると、「~.static」という名前のファイルができています。これらのファイルは、これまでの静的再構築で作られていたファイルです。
これらのファイルは不要になりますので、サーバーから削除することができます。

12.小粋空間のテンプレートをお使いの場合

小粋空間のテンプレートをお使いの場合、メインページや各アーカイブ・ページのテンプレートの先頭に、以下のXML宣言が入っています。

<?xml version="1.0" encoding="<$MTPublishCharset$>"?>

Perl版ダイナミック・パブリッシングを利用すると、ダイナミック・パブリッシング化したページは、すべてPHPで処理されます。
一般的なPHPの設定では、「<?」と「?>」で囲まれた部分はPHPのスクリプトとして認識されます。
上記のXML宣言も「<?」と「?>」で囲まれているため、PHPのスクリプトと認識されてしまい、このままだと以下のようなエラーが表示されます。

Parse error: syntax error, unexpected T_STRING in /○○○/index.php on line 1

そこで、この行を以下のように書き換えて、XML宣言をPHPのスクリプトで出力するようにします。

<?php print('<?xml version="1.0" encoding="<$MTPublishCharset$>"?>' . "\n"); ?>

MT Cloud Starter Kit
Movable Typeのプラグイン集「MT Cloud Starter Kit」をぜひご利用ください