ダイナミックパブリッシングを利用すれば、テンプレートごとにブログ単位でスタティック・ページとダイナミック・ページを組み合わせて、ブログのパブリッシングとトラフィックのバランスを最適化できます。たとえば、サイトのメイン・ページのインデックスや RSS フィードのように、頻繁にリクエストのアクセスがあるページではスタティックに出力し、月別やカテゴリーのアーカイブなど、リクエストのアクセスが比較的少ないページにはダイナミック・ページを使う、などといったことができます。
ダイナミックパブリッシングを利用する場合、データベースは MySQL をお使いください。また、ウェブサーバーとして Apache を使用している場合、mod_rewrite が有効、かつ .htaccess を利用できることが必要です。
ダイナミックパブリッシングとスタティック・パブリッシングとの組み合わせ
ダイナミックパブリッシングにはさまざまな利点があります。通常の更新方法の場合、スタティックな HTML を作成するため、テンプレートなどを変更するたびに再構築の必要が あります。しかし、ダイナミックパブリッシングの場合は、テンプレートなどの変更がすぐに反映されます。大量のエントリーが存在するブログの場合、再構築の時間を大幅に削減できます。
さらに、ダイナミックパブリッシングはエントリーの数だけ HTML ファイルを生成するのではなく、リクエストごとに逐次ページを生成するため、ディスク・スペースの節約にもなります。たくさんのインデックス/アーカイブ・テンプレートを使用したい場合も、容量の心配をすることなしに構築できます。
ただし、リクエストのアクセスが多い場合、サーバーへの負荷が高くなります。そうしたページはスタティック・パブリッシングで公開すれば、負荷を軽減できます。ダイナミックとスタティックを適切に使い分けることで、円滑なシステム運営が可能になります。
ダイナミックパブリッシングを利用する
Apache の AllowOverride 設定
ウェブ・サーバーとして Apache を使用している場合、ダイナミックパブリッシングのために .htaccess ファイルを利用できるように設定する必要があります。Apache の設定ファイル httpd.conf に以下の記述を追加します。
<Directory /usr/local/apache/htdocs/mt>
AllowOverride All
</Directory>
例: ブログのルートディレクトリが「/usr/local/apache/htdocs/mt」の場合
.htaccess ファイルはステップ1でダイナミック・パブリッシングを使用する設定に変更した時点で自動的に生成されます。
Internet Information Server をお使いの場合
IIS に対してはエラー・ハンドラをカスタマイズします。Internet Information Server をお使いの場合は、「mtview.php」スクリプトをカスタムのエラー・ドキュメントとして使うように、ウェブ・ディレクトリを設定する必要があります。その際は 403 と 404 のエラーに対して設定してください。
公開に関するオプションを設定する
PowerCMS 1.5 より、ダイナミックパブリッシングを含む公開に関する設定は、ブログのテンプレート管理画面で行うようになりました。詳しくはドキュメント: ブログの公開プロファイル を参照ください。
- ブログダッシュボードの [設定] より [ブログの設定] を選択します。
- 左側の [公開] を選択します。
- 公開に関するオプションの項目にある『公開方法』を設定します。
- 変更を保存ボタンをクリックして設定は完了です。再構築の必要はありません。
- すべてのテンプレートを静的に構築する
-
すべてのテンプレートを静的生成します (初期状態)。
- アーカイブテンプレートのみダイナミックで構築する
-
アーカイブテンプレートとして生成されるページを動的生成します。
- テンプレートごとに構築方法を設定する
-
選択するとテンプレート各々の編集画面に「公開」プルダウンが追加され、静的生成か動的生成を選択できます。
- すべてのテンプレートをダイナミックで構築する
-
すべてのテンプレートを動的生成します。PowerCMS 1.5 より追加された機能です。
キャッシュ機能を有効にする (オプション)
ダイナミックパブリッシングを最適化する方法として、ページレベルのキャッシングを有効にするというものがあります。この機能によって、ダイナミックパブリッシングは、1つのリクエストから次のリクエストに移行する間、ファイル・システムにキャッシュされるので、スタティック・ページに近いスピードが得られます。長期的に見ると、これはディスク・スペースをより多く消費しますが、性能上の利点があります。
条件付き取得を有効にする (オプション)
ダイナミック・ページに、条件付きリクエスト (HTTP 304応答) を設定できます。通常、ページがダイナミックに生成される場合、ページは条件なしで生成されます。
条件付きリクエストに関連付けられたタイムスタンプはブログが最後に変更された時間です。変更とは、コメント、トラックバック、テンプレートなど、ブログのどの部分に対しての変更も意味します。さらに機能をアップして、条件付き動作を条件付きで設定できます。
500 Internal Server Error への対処
一部のレンタルサーバーでは、ダイナミックパブリッシングを有効にした場合に、Webサイトを表示すると「500 Internal Server Error」エラーが発生することがあります。以下に、このエラーの回避方法を解説します。
.htaccess の修正
ダイナミックパブリッシング機能を有効にすると、PowerCMSはブログのルートパスに.htaccessファイルを自動で作成します。この .htaccess ファイル内に、レンタルサーバーでサポートされていない書式があるためにエラーが発生する場合があります。以下のFAQを参考に、.htaccess を修正してください。
パーミッションの修正
PowerCMSでウェブサイトやブログを新しく作成するときに、ルートパスで指定したフォルダが存在しない場合、自動でこのフォルダが作成されます。そのときに、標準ではフォルダのパーミッションは「777」で作成されます。
一部のレンタルサーバーは、suEXEC環境を採用しているため、OtherにWriteパーミッションが指定されている「777」ではsuEXECのポリシーエラーが発生します。この問題を回避するためには、ダイナミックパブリッシングを利用するブログのフォルダのパーミッションを、「755」あるいは「705」に変更する必要があります。DirUmask 環境変数を指定することで、PowerCMSがフォルダを作成する際のパーミッションを変更できます。
例えば、以下をmt-config.cgiに指定すると、PowerCMSが作成するディレクトリ、ファイルのパーミッションがすべて755になり、suEXEC環境でもPHPを使ったダイナミックパブリッシングを利用できます。
DirUmask 0072
HTMLPerms 0777
HTMLUmask 0022
UploadPerms 0777
UploadUmask 0022