Movable Type の再構築を不要にする「ダイナミック・パブリッシング」(その2:設定方法)

Movable Type の再構築を不要にする「ダイナミック・パブリッシング」(その2:設定方法)

Posted at November 15,2006 1:30 AM
Tag:[DynamicPublishing, MovableType]

その2ではダイナミック・パブリッシングの具体的な設定方法を記します。前提条件を満たしていれば、さほど難しい設定はありません。

1.ダイナミック・パブリッシングの条件

1.1 データベース

まず、使用データベースに

  • MySQL
  • PostgreSQL
  • SQLiteバージョン2

が利用されていることが必要です。
もし BerkeleyDB や SQLite を利用されているのであればデータベースの移行が必要になります。データベース移行については下記の記事が参考になるでしょう。

1.2 HTTPサーバ

.htaccess が利用できる必要があります。レンタルサーバであれば大体利用できる設定になっていると思いますが、自宅サーバで Apache をご利用であれば httpd.conf に以下のような記述を追加します。ディレクトリはご自身の環境にあわせてください。

リスト1 httpd.conf

<Directory /usr/local/apache/htdocs/mt>
  AllowOverride All
</Directory>

IISをお使いの場合は、403と404のエラーに対して、mtview.phpへのURLを設定してください(とマニュアルに記載されています)。

2.ダイナミック・パブリッシングの設定方法

2.1 再構築オプションの変更

Movable Type の管理画面から[設定]-[公開]の「公開」欄にある「再構築オプション」から下記のいずれかを選択し、「変更を保存」をクリックします。

「アーカイブのみダイナミック・パブリッシングで出力します」を選択
アーカイブのみダイナミック・パブリッシングで出力

「テンプレート別に、スタティックHTMLもしくはダイナミック・パブリッシングを選択します」を選択
テンプレート別に、スタティックHTMLもしくはダイナミック・パブリッシングを選択します

なお、1.2項で説明した .htaccess は、上記を選択し「変更を保存」をクリックした時点で生成されます。

後者を選択した場合は、さらに各テンプレートの編集ページで「このテンプレートをダイナミック・ページにする」のチェックボックスをチェックします。チェックして保存すると、そのテンプレートがダイナミック・パブリッシングの対象になり、再構築ボタンが非表示になります。
インデックス・テンプレートはスクリーンショットのような選択画面が表示されますので、「このテンプレートをダイナミック・ページにする」にチェックをして保存すれば、下の「インデックス・テンプレートを再構築するときに、このテンプレートを自動的に再構築する」のチェックボックスは非表示になります。

2.2 テンプレート・キャッシュ・ディレクトリの作成

ブログのルート・ディレクトリに templates_c という名前で新しいディレクトリを作成し、パーミッションを777に設定します。ディレクトリを作成しないとページが正常に表示されません。

3.ダイナミック・パブリッシングの最適化

以下の設定を行うことでダイナミック・パブリッシングを最適化します。

3.1 ページ・レベルのキャッシング

その1で説明した通り、Movable Type ではページのキャッシュ機能があります。この機能を利用すれば、あるページに対するリクエストで、そのページがファイルとしてキャッシュされます(ファイル名は外部から認識できない文字列)。

キャッシングを有効にするには、ブログのルート・ディレクトリに cache という名前のディレクトリを作成し、パーミッションを777に設定します。
次に、Dynamic Site Bootstrapperテンプレート(mtview.php)に青色の行を加えます。

リスト2 Dynamic Site Bootstrapperテンプレート

<?php
    include('<$MTCGIServerPath$>/php/mt.php');
    $mt = new MT(<$MTBlogID$>, '<$MTConfigFile$>');
    $mt->caching =true;
    $mt->view();
?>

設定後、保存・再構築します。

これを利用すれば、(多分)テンプレートの内容が変更されるまでこのキャッシュが利用されるので、スタティック・パブリッシングに近いスピードでページにアクセスすることができます。
キャッシュを利用することでディスクは消費しますが、パフォーマンスは向上します。キャッシュはサーバの環境にあわせて利用を検討してください。個人的にはディスクの余裕があれば利用されることを推奨します。

3.2 条件付きリクエスト

ページ・レベルのキャッシングと排他的に利用すると思われるのが、この「条件付きリクエスト」です。機能としては、ページに変更がない状態でリクエストを受け付けた場合、304 Not Modified(サーバ上のファイルの変更がないためブラウザのキャッシュを用いることを示す)を返却します。

この設定を行うには、Dynamic Site Bootstrapperテンプレート(mtview.php)に青色の行を加えます。

リスト3 Dynamic Site Bootstrapperテンプレート

<?php
    include('<$MTCGIServerPath$>/php/mt.php');
    $mt = new MT(<$MTBlogID$>, '<$MTConfigFile$>');
    $mt->conditional =true;
    $mt->view();
?>

設定後、保存・再構築します。

ダイナミック・パブリッシングを行うか、304 を返却するかの元情報は、ブログのコメント・トラックバック・テンプレート等のタイムスタンプを利用しているようです。

参考:Movable Type 3.3 マニュアル - ダイナミック・パブリッシング

関連記事
トラックバックURL


トラックバック

MTのダイナミックパブリッシングについて from ダラダラブログ
毎度お世話になってる「小粋空間」さんのところでMT3.3のダイナミックパブリッシ... [続きを読む]

Tracked on November 17, 2006 12:25 PM

MT 自宅サーバへの移転 from juyama.net
このブログはMT(MovableType)で構築しています。以前はレンタルサーバ... [続きを読む]

Tracked on April 26, 2007 2:19 AM

MT 自宅サーバへの移転と各種設定 from juyama.net
このブログはMT(MovableType)で構築しています。以前はレンタルサーバ... [続きを読む]

Tracked on April 26, 2007 2:49 AM

ダイナミック・パブリッシングに対応しました from えぬぱすどっとねっと
焼です。どうもMovableType4では再構築時にヘッダエラーが出て色々調べて... [続きを読む]

Tracked on September 25, 2007 11:53 PM
コメント

こんにちは。
ダイナミック・パブリッシングを取り上げて下さってありがとうございます。
私もスタティックに比べてダイナミックの認知度が低いのではないかという懸念を持っていましたので、これを機にもっとダイナミック・パブリッシングが広がっていってくれたらいいなと思います。

ページ・レベルのキャッシングですが、ダイナミック用の頁分割とは相性がよくないようです。キャッシングを使うと頁分割が正常に機能しないという話を聞いていますので、ダイナミックで頁分割をする場合はキャッシング機能は使わない方がよいようです。

[1] Posted by TAEKO : November 15, 2006 12:01 PM

>TAEKOさん
こんにちは。
コメント&情報ありがとうございました。
色々参考にさせて頂くと思いますが、どうぞよろしくお願い致します。

[2] Posted by yujiro : November 16, 2006 4:55 PM

少々ダイナミックパブリッシングについてお聞きしたいことがありましたのでこの場で質問させていただきたいと思います。
ご説明どおりに
2.1 再構築オプションの変更
2.2 テンプレート・キャッシュ・ディレクトリの作成
とやりました。ためしにメインページをダイナミックに変えてみましたら、index.htmlが消えてしまいアクセスしても何も表示されなくなってしまいました。エラー画面が出るのではなくただ真っ白なページになってしまいます。
データベースはMySQLですし、.htaccessもしっかり設定ファイルに書き込みました。templates_cのパーミッションも777です。今はスタティックに戻しておりますが毎回毎回再構築を行うのが面倒なので出来ればダイナミック・パブリッシングで運用していきたいと考えております。
どのあたりが問題か、分かりませんでしょうか?
分かりにくい文で申し訳ありませんがよろしくお願いします。

[3] Posted by およよ : August 3, 2007 5:18 AM

>およよさん
こんばんは。
ご質問の件ですが、
http://www.koikikukan.com/archives/2007/05/10-015037.php#c10613
の内容に該当していないでしょうかご確認ください(今のところ思い当たる情報はそれだけです)。
それではよろしくお願い致します。

[4] Posted by yujiro : August 4, 2007 1:44 AM

横から失礼します

:::ダイナミック・パブリッシング時にページが真っ白になる件:::

私もこれにどハマりました。およよさん、以下の点を確認してみてはいかがでしょうか?

・ mod_rewrite.so が有効になっているかどうか
→ http://komitsudo.blog70.fc2.com/blog-entry-58.html
・ phpからDBに接続するモジュールがインストールされているかどうか
→ DBがPostgreSQLの場合、php-pgsql がインストールされているか
   DBがMySQLの場合、php-mysqlがインストールされているか

私は後者の方(phpからDBにアクセスするモジュールがなかった)でひっかかって、まる1日悩みました。解決の糸口になれば良いのですが・・・。

[5] Posted by ぱえりあ : August 25, 2007 1:54 AM

>ぱえりあさん
こんにちは。
ご返事遅くなりましたが、アドバイスありがとうございました!

[6] Posted by yujiro : September 6, 2007 11:20 AM
コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)