拙著「株はタイミングで儲けなさい」が発売されました。
過去20年間の株価データを元にバックテストを行い、どのようなタイミングで株を買うのが良いかを解説しています。
自由国民社刊で、定価1,512円(消費税込み)です。
Perl版ダイナミック・パブリッシング(MT4用)
2008年6月6日
Movable Type 4.2をお使いの方は、4.2専用版をご利用ください。
「Perl版ダイナミック・パブリッシング」は、テンプレートの再構築を動的に行うことができるプラグインです。
読者がページにアクセスした時点でページを再構築する動作をします。
Movable Type本体のダイナミック・パブリッシングとは異なり、既存のプラグインをほとんど利用できるメリットがあります。
さらに、データベースとしてMySQLかPostgreSQLを使っている場合、ページをキャッシュして、動的再構築による負荷の増加を抑えることもできます。
このプラグインのMovable Type 4版を公開します。
なお、Movable Type 3.3では3.3用をお使いください。
1.プラグインのダウンロードと解凍
Perl版ダイナミック・パブリッシングのプラグインは、以下のアドレスからダウンロードします。
また、今回のバージョンから、再構築処理を別プラグインに分離しています。
そのプラグインは以下のアドレスからダウンロードします。
プラグインの継続的な開発やサポートのために、プラグインをご利用された方は、ドネーション(寄付)を行っていただけると幸いです。
ドネーションの方法は、こちらのページをご参照ください。
また、このプラグインの他にも、いくつかのプラグインを配布しています。
配布中のプラグインは、Movable Type Plugin Directoryのページをご参照ください。
Movable Typeのプラグイン開発等のドキュメント「Movable Type Developer's Guide Volume 1」も販売しています。
ご自分でプラグインを作ってみたい方に、ぜひお勧めしたい一冊です。
詳細は特設ページをご覧ください。
これら2つのファイルをダウンロードしたら、解凍しておいてください。
ただし、この時点ではまだアップロードは行いません。
2.全SQL対応版からバージョンアップする場合の準備
これまでに、全SQL対応版のPerl版ダイナミック・パブリッシングを利用していた場合、バージョンアップの前に準備の作業が必要です。
まず、MySQLまたはPostgreSQLでデータベースを管理している場合は、既存のキャッシュ用テーブルをデータベースから削除します。
手順は以下の通りです。
- 1.の手順で解凍したものの中に、「PerlDynamic」というフォルダがあり、その中に「mt-dpcache-drop.php」というファイルがありますので、そのファイルをメモ帳等で開き、内容をすべてコピーします。
- Movable Typeにログインして、Perl版ダイナミック・パブリッシングを利用しているBlogで、インデックス・テンプレートを新規作成します。
- インデックス・テンプレートの名前と出力ファイル名を「mt-dpcache-drop.php」にし、「テンプレートの内容」の欄に、先程コピーしておいたmt-dpcache-drop.phpの内容を貼り付けます。
- ここまででできたインデックス・テンプレートを保存し、再構築します。
- 再構築されたページにアクセスすると、既存のキャッシュ用テーブルが削除されます。
- mt-dpcache-drop.phpのテンプレートを削除し、またBlogの出力先ディレクトリからも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」ファイルを削除します。
3.プラグインのインストール
次に、Perl版ダイナミック・パブリッシングのプラグインをインストールします。
先程解凍したファイルの中に、「PerlDynamic」と「RebuildHelper」の2つのフォルダがあります。
それらのフォルダを丸ごと、Movable Typeのインストールにある「plugins」ディレクトリにアップロードします。
ただし、「mt-dpcache-drop.php」ファイルはアップロードしないでください。
これで、Movable Typeの「plugins」ディレクトリの中に、「PerlDynamic」と「RebuildHelper」というディレクトリができます。
「PerlDynamic」ディレクトリの中にある「mt-perl-dynamic.cgi」と「mt-perl-dynamic-setup.cgi」のパーミッションを「755」などに変えて、実行可能にします。
なお、Movable Typeの設定をutf-8以外にしていても、ファイルをアップロードする際には文字コードを変えないでください。
4.データベースの初期化
このプラグインをアップロードした後、初めてMovable Typeにログインする際には、以下のようなページが表示されますので、「アップグレードの開始」ボタンをクリックします。
サインインするようにメッセージが出たら、ログインを行います。
これで、データベースにテーブルが追加されます。
アップグレードが終わると、以下の表示になります。
5.FastCGI化の設定
FastCGIに対応したサーバーをお使いの場合は、Perl版ダイナミック・パブリッシングをFastCGI化することができます。
まず、サーバーにアップロードした「mt-perl-dynamic.cgi」の拡張子を、FastCGIの拡張子に変えます。
例えば、「.fcgi」の拡張子のファイルをFastCGIとして動作させるように設定している場合、「mt-perl-dynamic.cgi」を「「mt-perl-dynamic.fcgi」にリネームします。
次に、プラグインの設定で、「mt-perl-dynamic.cgi」の拡張子を指定します。
システムメニューのプラグイン一覧のページを開き、「Dynamic publishing by Perl」のプラグインの箇所で「設定を表示」のリンクをクリックします。
これで設定を行う状態になりますので、「mt-perl-dynamic.cgiの拡張子」の欄で、FastCGIの拡張子を設定します。
例えば、「.fcgi」の拡張子のファイルをFastCGIとして動作させるように設定している場合、この欄に「fcgi」と入力します。拡張子の前の「.」は入力しません。
6.ダイナミック・パブリッシングをオンにする
次に、Movable Typeのダイナミック・パブリッシングの機能をオンにします。
ダイナミック・パブリッシングにしたいBlogで、「設定」メニューの「ブログの設定」を選んで設定ページを開き、ページ左端のメニューで「公開」を選びます。
そして、「公開に関するオプション」の部分で「テンプレートごとに構築オプションを設定する」をオンにして、「変更を保存」ボタンをクリックします。
7.Perl版ダイナミック・パブリッシングの初期化
次に、Perl版ダイナミック・パブリッシングを初期化します。
ダイナミック・パブリッシングにしたいBlogで、「設定」メニューの「ブログの設定」を選んで設定ページに接続し、ページ左端のメニューで「プラグイン」を選びます。
そして、プラグイン一覧の「Dynamic Publishing by Perl」のところで「設定を表示」をクリックします。
すると、「初期化する」というリンクが表示されますので、それをクリックします。
初期化が終わると、以下のようなメッセージが表示されます。
なお、初期化では以下のような処理が自動的に行われます。
- .htaccessファイルの書き換え
- mt-dynamic.phpテンプレートの作成と再構築
- SQL用テンプレート(sqlsub_mysql.phpまたはsqlsub_pgsql.php)の作成と再構築
8. .htaccessファイルの確認
環境によっては、Movable Typeのダイナミック・パブリッシングの機能をオンにした際に、.htaccessファイルが正しく出力されないことがあるようです。
その場合、上記の手順での.htaccessの書き換えが正しく行われません。
初期化の際に「.htaccessファイルの書き換えに失敗しました。」のメッセージが表示された場合は、Blogの出力先ディレクトリに、以下の内容の.htaccessファイルを作成します。
また、Blogのサイトパスとアーカイブパスを別にしている場合は、アーカイブの出力先ディレクトリにも同じ内容の.htaccessを作成します。
ただし、リスト中の赤字の部分(4か所)は、Blogのトップページがサイトのルートにある場合のものです。
ルート以外のディレクトリにブログがある場合、赤字の部分を書き換える必要があります。
例えば、Blogのトップページのアドレスが「http://www.foo.com/blog/」の場合、赤字の部分を「/blog/mt-dynamic.php」にします。
## %%%%%%% Movable Type generated this part; don't remove this line! %%%%%%% # Disable fancy indexes, so mtview.php gets a chance... Options -Indexes +SymLinksIfOwnerMatch <IfModule mod_rewrite.c> # The mod_rewrite solution is the preferred way to invoke # dynamic pages, because of its flexibility. # Add mtview.php to the list of DirectoryIndex options, listing it last, # so it is invoked only if the common choices aren't present... <IfModule mod_dir.c> DirectoryIndex index.php index.html index.htm default.htm default.html default.asp /mt-dynamic.php </IfModule> RewriteEngine on # don't serve mtview.php if the request is for a real directory # (allows the DirectoryIndex lookup to function) RewriteCond %{REQUEST_FILENAME} !-d # don't serve mtview.php if the request is for a real file # (allows the actual file to be served) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !\.(cgi|css|gif|jp*g|png)$ # anything else is handed to mtview.php for resolution RewriteRule ^(.*)$ /mt-dynamic.php [L,QSA] </IfModule> <IfModule !mod_rewrite.c> # if mod_rewrite is unavailable, we forward any missing page # or unresolved directory index requests to mtview # if mtview.php can resolve the request, it returns a 200 # result code which prevents any 4xx error code from going # to the server's access logs. However, an error will be # reported in the error log file. If this is your only choice, # and you want to suppress these messages, adding a "LogLevel crit" # directive within your VirtualHost or root configuration for # Apache will turn them off. ErrorDocument 404 /mt-dynamic.php ErrorDocument 403 /mt-dynamic.php </IfModule> ## ******* Movable Type generated this part; don't remove this line! *******
9.Perl版ダイナミック・パブリッシングの設定
次に、Perl版ダイナミック・パブリッシングを設定します。
初期化完了のページで、「このリンクをクリックして、設定を続けてください。」をクリックすると、設定ページに移動します。
また、ブログの「設定」ページの「プラグイン」でPerl版ダイナミック・パブリッシングの「設定を表示」をクリックし、その中の「設定を行う」のリンクをクリックしても、設定ページを開くことができます。
設定ページでは、以下の点を設定します。そして、設定が終わったら、「設定を保存」のボタンをクリックします。
・インデックスページのファイル名
メインページとアーカイブページのファイル名を指定します。
初期値は「index.html」ですが、BlogをPHP化している方は「index.php」に変えてください。
・ページが見つからないときの移動先のURL
間違ったアドレスのページに接続されたときには、エラーページに転送することができます。
その機能を使いたい場合は、この欄にエラーページのURLを入力します。
なお、この欄を空欄にした場合、間違ったアドレスに接続されたときには、「ご指定のアドレスのページは見つかりませんでした。」というメッセージが表示されます。
・キャッシュの設定
Movable TypeのデータをMySQLかPostgreSQLに保存している場合、ページのキャッシュ機能を使うことができます。
キャッシュ機能を使いたい場合は、「キャッシュを使う」のチェックをオンにします。
また、キャッシュをオンにする場合、「キャッシュの容量」の欄で容量も指定することができます。
10.ダイナミック・パブリッシングにするテンプレートを選ぶ
次に、インデックス・テンプレートとアーカイブ・テンプレートの中で、ダイナミック・パブリッシングにしたいものを選びます。
対象のテンプレートを開き、「再構築オプション」の部分にある「このテンプレートをダイナミックページにする」のチェックをオンにして、テンプレートを保存します。
↓このテンプレートをダイナミックページにする」のチェックをオンにする
11.Blog全体を再構築する
ダイナミック・パブリッシングにするテンプレートを選び終わったら、Blog全体を再構築します。
これ以後は、各ページがダイナミック・パブリッシングで出力されます。
なお、再構築後にBlogの出力先ディレクトリを見ると、「~.static」という名前のファイルができています。これらのファイルは、これまでの静的再構築で作られていたファイルです。
これらのファイルは不要になりますので、サーバーから削除することができます。
12.指定日投稿と組み合わせる場合
指定日投稿を使う場合、Movable Typeのlib/MT/WeblogPublisher.pmを一部書き換えることが必要です。
このファイルの中に「sub publish_future_posts」という部分があります。
その部分の最後のあたりに、以下の赤字の部分を追加します。
・ ・ ・ } else { $blog->touch; $blog->save; } } } $total_changed > 0 ? 1 : 0; } sub remove_entry_archive_file { ・ ・ ・