MTの基本は(いや何をもって基本とするかはそれぞれではあるのですが)、ページをHTMLなりPHPなりで生成させて、置いておく、という形になります。
そして、ダイナミック・パブリッシングというのは、WordPressでも導入されてる仕様で「そのページにアクセスがあった際に、ページを生成して閲覧状態にする」ものです。
- テンプレートの変更が即座に反映されます
- 再構築の必要がなくなります(正確にはちょと違うけど)
- ディスク・スペースの消費を抑える事が出来ます
上記は利点ばっかりですが、今のとこ何も悪い点が浮かばないのでしょうがありません。
・・・テンプレート内でPHP関数であるreadfileやincludeが使えないとか?
・・・判んないから実行あるのみ。
ダイナミック・テスト導入準備
ローカルサーバーはいつものXSASです。
MTサイトはリネーム+丸々コピー。DBもリネームコピー。
MTのconfigファイルを開いて、DBの指定とサイトのパスを書き換えます。
- CGIPath
- DB指定部分
- StaticWebPath
新しいサイトにログインしたら、サイトの公開設定からURLパスやアーカイブパスを書き換えて、全て一旦再構築します。
前回導入した「バックグラウンドリビルド」が早くも大活躍です。静かで安心して作業出来ます。
私の場合はWidget内にreadfileを用いてテンプレートを読み込ませているので一苦労。。。だって全て書き換えないと(。。|||)
ここで注意するのは、WidgetManagerを用いてテンプレートを管理している場合、このWidgetを「一旦保存」する必要があることです。
これを行わないと、WidgetManagerで管理しているテンプレート部分はいつまで経っても前の状態のまま、になってしまいます。
ここまで済んで、新しいテストサイトが用意出来たらいよいよDynamic Publishingに挑戦です。
※htaccessファイルを置いてる場合は、バックアップ取って一旦削除しておいて下さい。(後述)
ダイナミック・パブリッシング用プラグインのDL・UL
■The blog of H.Fujimoto:再構築不要化カスタマイズ(MT3.3専用版) [The blog of H.Fujimoto]
上記よりプラグインをDLしたら、
MTルート/plugins の中にディレクトリごとULします。
プラグインをULしたあとは、最初のログイン時にDBのアップグレードが促されるので、指示のままに従います。
ダイナミック・パブリッシング用プラグイン設定変更
設定→公開 タブ と進んで、「公開」部分にある
「テンプレート別に、スタティックHTMLもしくはダイナミック・パブリッシングを選択します 」を選びます。
次に、プラグイン タブ に進み「Dynamic publishing by Perl」の設定を表示させて、「初期化する」を選びます。
※ここで上記の「公開設定」を行ってない場合は、親切にその旨をお報せしてくれます。うーん・・・優しい(つまりドジった管理人)
<初期化終了>
一時ファイル用ディレクトリとキャッシュ用ディレクトリを作成しました。
mt-dynamic.phpのテンプレートを作成しました。
sqlsub_mysql.phpのテンプレートを作成しました。
Perl版ダイナミック・パブリッシングの設定
それぞれの設定を行います。
私は全てPHP化してるので、拡張子をphpに。
ページが見つからない場合の移動先ページも、用意していた404ページを指定してみました。
キャッシュ機能についてはとりあえず"使いたがり"なので指定。
キャッシュはどこに保存されるのだろう?(´・ω・) ←「phpcacheDir内でした」
初期設定ではキャッシュ10MB(10000000byte)。テストなのでこの数値も変更して5MBにしてみます。
設定を保存したら、Blogのメニューに戻ります。
テンプレートをダイナミック・パブリッシングに指定する
環境設定のテンプレートに進んで、ダイナミックパブリッシングしたいテンプレートを開いて、「ダイナミック・ページ」のチェックを入れます。
この段階で「再構築チェック」などが消えちゃいますが焦らず。ドキドキ
こうやって、各々のテンプレートをダイナミック・パブリッシング指定に変更して行きます。
全部終ったら、ブログ全体を一旦再構築します。
トラブル発生
ここまで一通りやったら、既存の静的ファイルは「~.static」と名前を変えて存在してます。
これは全部削除。
で、いざインデックスやその他アーカイブ内のURLにアクセスするも、404か403が出てことごとく失敗しました。
こんなエラーが発生するのはhtaccessのせいだろうと目星をつけつつ、手順確認。
プラグインの配布元によれば「初期化」の段階でhtaccessを書き換える、との事。
私はエラーとタグのURL短縮表示の制御をhtaccessで行っているため、この既存のファイルを確認してみると『書き換えが行われていない』。
ので、このファイルを消して再度:手順「設定変更」のところからやり直し。
今度はhtaccessが作成されて、URLにはアクセス出来るようになりました。
陥落
出来た出来たと喜びつつしばらく様子を見ていると、今度は
「キャッシュファイルのコピーに失敗しました」と表示がなされ、一切のアクセスが不可に。
・・・・・Σ(゚Д゚)
幾度手順を確認しても、やり直してみてもウンともスンとも言わなくなりました。
DBに潜って、fileinfo辺りが怪しいと睨んでみてもどうにも出来ず。
ちなみに消してみたけどダメでした。
というワケで、ダイナミック・パブリッシングは「失敗」に終りました。
あとがき
ちょっとの間アクセスして画面が表示されてる時は楽しかったです^^
Wordpress(EUC)ではこの動的生成はちょっと体感していたのですが、Movabletypeでは動いてないテンプレート部分はどこなんだろう?とか、今までファイルが在っただけに、その箇所に何もないのに、ページが生成される、って動作が面白かったです。
それにしても「キャッシュファイルのコピーに失敗」かぁ。。。ディレクトリはちゃんと出来てるし、書き込めない制限なんてないハズなんだけど。
MTのD・パブリッシングが作用しちゃってるのか、Perl版が動いてるのかもはっきり判らず。
ApacheのログにはFeedのエラーが連綿と・・・って、えぇ!?
なんですかこれは(つω-`)
せっかくテンプレートの変更が即座に適用されるっていうので、これを用いてテンプレートの改変を行って、再構築せずに直ぐ適用確認!したかったのに。
無念(・ω・)
[参考記事]
■Movable Type 3.2 マニュアル - ダイナミック・パブリッシング
■Movable Type 3.3 マニュアル - ダイナミック・パブリッシング
■The blog of H.Fujimoto:再構築不要化カスタマイズ(MT3.3専用版) [The blog of H.Fujimoto]