2006年11月15日

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

その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 マニュアル - ダイナミック・パブリッシング

Comments [6] | Trackbacks [4]
2006年11月14日

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

「Movable Type で再構築ができません」「500エラーが多発します」という記事をよくみかけますが、Movable Type には WordPress のようなページの動的生成、いわゆる「ダイナミック・パブリッシング」がバージョン 3.1 から標準搭載されており、これを利用することで再構築不要な環境にすることができます。

「ダイナミック・パブリッシング」とは、リクエストが発生するたびにHTMLページを動的に生成する機能です。ちなみに「再構築」は、エントリー本文やコメント・トラックバック等のデータをデータベースから読み出して、スタティックなHTMLページを生成することです。

当サイトではこれまで「ダイナミック・パブリッシング」について全く取り上げていなかったのですが、今後は少しずつ記事として取り上げていきたいと考えています。
というのは、現在発売されている某雑誌で「Movable Type はスタティックなHTMLページ生成しかできません」ということが書かれており、Movable Type のブログツールとしての著名度に比べ「ダイナミック・パブリッシング」についての認知度が低いのではないかと懸念した次第です(私もその一人だったかもしれませんが)。

※スタティックページ生成を、ここでは便宜上「スタティック・パブリッシング」と称します。

1.スタティック・パブリッシングとダイナミック・パブリッシングの比較

まずは概要ということで、スタティック・パブリッシングとダイナミック・パブリッシングの各評価項目について、表で比較してみました。

表1 スタティック・パブリッシングとダイナミック・パブリッシングの比較
項目スタティックダイナミックダイナミック・パブリッシングを設定したページおよび管理画面
再構築不要「ページを再構築する」という作業がなくなります(「保存」ボタンはデータベースに変更を反映させるだけ)。
再構築による500エラーありなし *1再構築がなくなりますので、500エラーが発生しなくなります。
ページ表示早いやや遅いアクセス毎にPHPを実行してページを生成するため、その分時間を要します。*2
ディスク容量エントリー数に比例して増加スタティックページを生成しないため、ディスクの消費が少なくなります。*3
エントリー削除後のHTMLファイル残らない *4残らないスタティックなファイルを生成しないので、誤って公開してしまったエントリーもアクセスされなくなります。
コメント・トラックバック処理やや遅い早いコメント・トラックバック受信によるスタティックページ生成処理がなくなる分、処理が早くなります。
テンプレートタグ関連のプラグイン利用できる利用できないPHPで動作するため、当サイトで公開している「Movable Type プラグイン一覧」で掲載しているテンプレートタグ(<MTxxx> みたいなもの)が使えない場合があります。*5 *6

どちらを選択するかについては、ご利用のサーバ環境等に依存します。

2.Movable Type でのメリット

1項に記していない、Movable Type を利用する際における大きなアドバンテージは、ダイナミック・パブリッシングとスタティック・パブリッシングをテンプレート単位に選択できることです。したがって、リクエストの多いメインページやRSSフィードはスタティック・パブリッシング、比較的アクセスが落ち着いている(と思われる)アーカイブページはダイナミック・パブリッシングで運用することが望ましいでしょう。


*1:単純に「ダイナミック・パブリッシング」にすれば、再構築のストレスから解消できるという訳でもないようです。例えば、ロリポップではサーバ+DBのパフォーマンスの問題か、「ダイナミック・パブリッシング」が快適に動作しないケースがあるようですので、導入する前にレンタルサーバのサポートやネット上で情報を入手されることをお勧めします。

*2:キャッシュ機能を利用することで改善されます。

*3:キャッシュ機能を利用するとディスクはその分必要になります。

*4:オプション設定が必要。詳細は「Movable Type のエントリー削除でHTMLファイルも自動的に削除する」参照。

*5:プラグインを利用したい場合は、The blog of H.Fujimoto さんの「再構築不要化カスタマイズ(MT3.3専用版)」をお勧めします。

*6:テンプレートタグ関連のプラグインはPHPで作成すれば対応可能(通常のプラグインはPerl)です。ダイナミック・パブリッシング用プラグインはほとんど出回っていない状況ですが、中には対応しているものもあります。

Comments [0] | Trackbacks [2]
Now loading...
ギターに入った猫
掲載広告募集
Styles
Font Size
Default
For defective color vision
Gray Scale
RGB Color
Search this site

このブログをメールで購読する by:FeedBurner


AMN
Categories
Monthly Archives
2017年
2016年
2015年
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
2005年
2004年
2003年
BlogPeople
Syndicate this site
FeedBurner(RSS1.0/RSS2.0/Atom)
Counter
これまでのアクセス
Powered by
Movable Type 6.0.3