「Perl版ダイナミック・パブリッシング」は、テンプレートの再構築を動的に行うことができるプラグインです。
読者がページにアクセスした時点でページを再構築する動作をします。
Movable Type本体のダイナミック・パブリッシングとは異なり、既存のプラグインをほとんど利用できるメリットがあります。
このプラグインのMovable Type 5用を公開します。
Movable Type 5β3の環境で動作をテストしました。
今日は、インストールとMovable Type全般に関する設定の手順を解説します。
なお、このバージョンはMovable Type 5専用です。
旧版のMovable Typeをお使いの方は、以下のバージョンをご利用ください。
1.必要な環境
このプラグインはPHPを使用しています。
したがって、PHPが動作するWebサーバーが必要です。
ただし、ウェブサイトやブログの個々のページの拡張しは、.htmlのままで構いません。
また、データベースとして、MySQLを使っていることが必要です。
プラグイン自体はSQLiteとPostgreSQLにも対応していますが、MT本体がMySQLのみサポートになりましたので、SQLiteとPostgreSQLでの動作については保証できません。
2.プラグインのダウンロードと解凍
Perl版ダイナミック・パブリッシングのプラグインは、以下のアドレスからダウンロードします。
また、「RebuildHelper」というプラグインも別途必要です。
そのプラグインは以下のアドレスからダウンロードします。
RebuildHelperもバージョンアップしていますので、1.02以前のバージョンをお使いの方は、新しいバージョンをダウンロードしてください。
これら2つのファイルをダウンロードしたら、解凍しておいてください。
ただし、この時点ではまだアップロードは行いません。
3.全SQL対応版からバージョンアップする場合の準備
以下のパターンの方は、このプラグインのバージョンアップの前に準備の作業が必要です。
- これまでMovable Type 3.3xを使っていて、今回Movable Type 3.3からMovable Type 5.0にバージョンアップした
- Movable Type 3.x用の全SQL対応版のPerl版ダイナミック・パブリッシングを利用していた
まず、MySQLまたはPostgreSQLでデータベースを管理している場合は、既存のキャッシュ用テーブルをデータベースから削除します。
手順は以下の通りです。
- 1.の手順で解凍したものの中に、「PerlDynamic」というフォルダがあり、その中に「mt-dpcache-drop.php」というファイルがありますので、そのファイルをメモ帳等で開き、内容をすべてコピーします。
- Movable Typeにログインして、Perl版ダイナミック・パブリッシングを利用しているブログで、インデックス・テンプレートを新規作成します。
- インデックス・テンプレートの名前と出力ファイル名を「mt-dpcache-drop.php」にし、「テンプレートの内容」の欄に、先程コピーしておいたmt-dpcache-drop.phpの内容を貼り付けます。
- ここまででできたインデックス・テンプレートを保存し、再構築します。
- 再構築されたページにアクセスすると、既存のキャッシュ用テーブルが削除されます。
- mt-dpcache-drop.phpのテンプレートを削除し、またブログの出力先ディレクトリからも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版ダイナミック・パブリッシングのプラグインをインストールします。
先程解凍した2つのZipファイルの中に、「PerlDynamic」と「RebuildHelper」の2つのフォルダがあります。
それらのフォルダを丸ごと、Movable Typeのインストールにある「plugins」ディレクトリにアップロードします。
ただし、「PerlDynamic」フォルダの「mt-dpcache-drop.php」ファイルはアップロードしないでください。
これで、Movable Typeの「plugins」ディレクトリの中に、「PerlDynamic」と「RebuildHelper」というディレクトリができます。
「PerlDynamic」ディレクトリの中にある「mt-perl-dynamic.cgi」と「mt-perl-dynamic-setup.cgi」のパーミッションを「755」などに変えて、実行可能にします。
5.データベースの初期化
このプラグインをアップロードした後、初めてMovable Typeにログインする際には、アップグレードのメッセージが表示されます。
画面の指示にしたがって、アップグレードの作業を行います。
6.ホスト名とポートの設定
まず、システムメニューに切り替えて、「ツール」→「プラグイン」メニューを選び、プラグイン一覧を表示します。
そして、「Dynamic publishing by Perl」の「設定」タブをクリックし、設定画面を開きます。
この中の「ホスト名」と「ポート」の欄を設定します。
「ホスト名」の欄には、Movable Typeのインストール先のホスト名(http://○○○.□□□.com/~なら「○○○.□□□.com」の部分)を入力します。
mt-config.cgiのCGIPathの設定が「http://~」の形になっていれば、そこからホスト名が自動的に割り出され、「ホスト名」の欄の初期値として入力されます。
一方、CGIPathの設定がホスト名以降の相対パスの形になっている場合、「ホスト名」の欄は空欄になります。
この時は、「mt.cgiのホスト名から入力」のボタンをクリックして、ホスト名を入力します。
「ポート」の欄は、デフォルトで「80」になっています。
通常は「80」のままにしておきます。
ただし、Movable Typeのインストール先サーバーのポート番号が80以外の場合(8080など)は、そのポート番号を、この欄に入力します。
「mt.cgiのポート番号を入力」のボタンをクリックすると、mt.cgiのアドレスからポート番号を割り出して、自動的に入力することができます。









![Hvarf-Heim (Hvarf) [Disc 1] Hvarf-Heim (Hvarf) [Disc 1]](http://userserve-ak.last.fm/serve/34s/37517227.jpg)

コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
はじめまして
壱さんと同じMT5BETA3にてプラグインを入れさせていただきました。
以下いくつかご質問させていただきます。
MTを使用するのは初めてですので、プラグインにかかわらない部分の質問になってしまっていたらすいません。
「Perl版ダイナミック・パブリッシングの設定」画面で
「変更を保存」ボタンを押すと「設定を初期化しました」と表示され
設定が保存できませんでした。
また、記事にある手順どおり作業をしたのですが、ページにアクセスするとフォルダの内容が表示されてしまい、ウェブページが表示されません。
なにか思い当たる部分はあるでしょうか?
お助け頂けましたら幸いです。
初めまして
現在5.01で使用するために設置しましたが以下のエラーがでます。
以前のバージョンでは使えていたので何が原因なのかさっぱりです。
ちなみにサーバーは、コアサーバーでPHPのバージョンは5.2.系列です。
原因と思わしきものとしてはmtディレクトリと公開ディレクトリを別にしているのが問題かなあとか思っています。
root
┣未公開ディレクトリ
┣mtディレクトリ
┣公開ディレクトリ
こんな感じになってます
Warning: include(403 Forbidden) [function.include]: failed to open stream: No such file or directory in /サイトパス/mt-dynamic.php on line 203
Warning: include() [function.include]: Failed opening '403 Forbidden' for inclusion (include_path='.:/usr/local/lib/php') in /サイトパス/mt-dynamic.php on line 203
>ほしさん
こんにちは。
ご質問の件ですが、MTのディレクトリにBasic認証をかけているのではないでしょうか。
申し訳ありませんが、現状のプラグインは、そのような環境では動作しません。
藤本さんこんにちは、お世話になっております。
今回MT3.35から5にアップデートしたのでDivPagesをインストールしようと思い、このプラグインを導入する準備をしているのですが、mt-dpcache-drop.php を保存しようとすると、以下のエラーが出てしまい保存も再構築もできません。
テンプレートの変更を保存しました。 テンプレートでエラーが見つかりました。
* は存在しません(2行目)。
わたしのMTは5.02です。
お忙しいところ申し訳ありませんがご教授お願いいたします。
すみません、タグが消えてしまいました。
存在しないといわれているのは MTGetConfig です。
よろしくお願いします。
藤本さん、こんにちは。
昨日質問させていただいた件ですが、古いバージョンのPerlDinamicを入れることで解決いたしました。
大変お騒がせしました。すみません。
プラグイン使用させていただいてます!
現在私が運用しているサーバで /usr/bin/perl -w mt-perl-dynamic.fcgi のプロセスが多発し高負荷をかけております。
過去のコメントで perl-dynamic.fcgi が暴走しているとの記述がりました
http://www.h-fj.com/blog/archives/2007/03/07-124806.php#comment-3286
壱さんのいアドバイスは
89行目を以下のように書き換えてみてください。
・書き換え前
if ($filename == 'Save page error') {
・書き換え後
if ($filename == 'Save page error' || trim($filename) == '') {
との事ですが、MT5版では行が111に変更されております。
MT5のmt-dynamic.phpを書き換えても問題ないでしょうか?
それとも何か別の方法がありますか?
よろしくお願いします。
>AKiさん
こんにちは。
MT5用のmt-dynamic.phpを書き換えていただいても良いはずです。
もっとも、FastCGI自体がそれほど安定していないという話もあり、定期的にApacheを再起動するようにされた方が良いかもしれません。
http://www.movabletype.jp/documentation/developer/server/fastcgi.html
FastCGIが問題なのかもしれないですね。
プロセスを見ていると通常はmt-perl-dynamic.fcgi が2~3個動いているという感じで1日の90%は問題なく運用できているのですが、たまにmt-perl-dynamic.fcgi が多発暴走(15~20プロセス)をしてサーバがストップしている時があります。
今後普通のcgiに切り替えたり、いろいろ試したいと思います。
何か他に思いつかれたら是非ご教授頂きたいです。ありがとうございました〜。
お世話になっております、ChibiRu です。
新しくサイトを作ってダイナミックパブリッシングを設定し
再構築して表示してみたところ、以下のようなエラーで
ページを見ることができません。
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR or '}' in /home/sites/heteml/users23/c/h/i/chibiru/web/mt5/php/mt.php on line 27
お忙しいところ申し訳ありませんが、
どうしたら表示されるようになるのかご教授くださいませ。
度々すみません、ChibiRu です。
.htaccessファイルの書き換えをしていなかったことに気づき
書き換えてみたところ、相変わらず表示はされず、
エラーの内容が変わってしまいました。
「500 error
Internal Server Error
CGIもしくはSSIが正しく動作していません。」
お手数をおかけして申し訳ありません。
どうかよろしくお願いいたします。
こんにちは。自力で解決しようと奮闘してたのですが、どうにも分からないので、お知恵をお貸しください。
MT5で新規にブログを作成たため、このページの3番の手順のみ飛ばして、他は手順通りに作業してみました。
「build error. : テンプレート「メインページ (Backup from 2011-02-21 20:26:06) index」の再構築中にエラーが発生しました: タグでエラーがありました: 「HTMLヘッダー」というモジュールテンプレートが見つかりませんでした。 」
と出てきました。不思議なのはテンプレート "メインページ" も "HTMLヘッダー" も私は使っていません。これらは初期設定時に生成されるテンプレートですよね。私は別のテーマを利用しているため、テンプレート構成が違います。
実際にダイナミックに指定したのは、テンプレート名 "HTML- メインページ"という名前のインデックステンプレートで、出力ファイルは index.html、種類は、main_index のもののみ公開設定を"ダイナミック"にしました。サイトを全指定で再構築した後、インデックスを表示しようとすると、上記のようになってしまいます。
キャッシュ周りが悪さをしているとは思うのですが…なぜ上記テンプレートが読まれてしまうのか分かりません
。
以下の手順で解決しました。
ブログ→ツール→検索・置換 テンプレートを“メインページ”で検索。
古いメインページテンプレートがあったら、全部削除。
その上で、再構築すると、無事にダイナミックに変換できました。
ダイナミックに変換する対象のテンプレートの種類(今回の場合、main_index)が指定された古いテンプレートも変換対象になっていたため、バックアップで残っていた“メインページ”も変換しようとして、怒られたんじゃないかと推測します。
無事動いて良かった…お騒がせしました。
ダイナミックで公開しているアーカイブテンプレートを書き換え、保存した直後に表示しようとしたところ、
Warning: include(404 Not Found) [function.include]: failed to open stream: No such file or directory in /virtual/***/public_html/mt-dynamic.php on line 203
Warning: include() [function.include]: Failed opening '404 Not Found' for inclusion (include_path='.:/usr/local/lib/php') in /virtual/***/public_html/mt-dynamic.php on line 203
と表示されるようになりました。
書き換えたテンプレートを元に戻しても、表示される内容は変わりませんでした。
何がいけなかったのでしょうか?
ご教授ください。
※解決しました。
ZenBackのコードをアーカイブテンプレートに追加した直後に別のエラーが起き、回避するため、ZenBackのコードを追加する前のテンプレートに戻したところ、上記のようなエラーが発生していたのですが、ZenBackのコードを外せば元通りになるだろうと考えていたのが甘かったようです。詳しくは解りませんが、ZenBackのjavascriptがトラブルの元だったようです。
お騒がせして申し訳ありませんでした。