MTOS 4.1 でアーカイブテンプレートをダイナミックで構築したところ,画面が真っ白になってしまった。ダイナミックパブリッシングに必要な PHP モジュールと Perl モジュールがインストールされていなかったのが原因だった。
Movable Type 4 では,MT3 に比べてダイナミックパブリッシングの設定の方法が簡単になった (Six Apart - 技術情報提供ブログ: Movable Type 4 でダイナミックパブリッシングを使用する)。実は私は,ダイナミックパブリッシングに関しては初心者である。拙作プラグインをダイナミックパブリッシングにも対応させるべく,環境を整えようとしたところ,ハマった。
環境は Movable Type Open Source 4.1,Apache 2.2.3,PHP 5.2.5,データベースは SQLite (2.8.17, 3.3.6),OS は Vine Linux 4.2 である。
ダイナミックパブリッシングの設定方法についてのドキュメントを見ながら作業する (ダイナミック・パブリッシング | Movable Type 4 ドキュメント)。「操作メニュー(ブログモード)」→「公開」を選択し,「公開方法」を指定する。…「公開方法」が見当たらない。
原因はデータベースの選択を間違っていたからだった。新しい方がいいだろうと思い,SQLite 3 をデータベースとして使っていたのである。MT4.1 は SQLite 3 をサポートしている。しかし,ダイナミックパブリッシングをするには,SQLite 2 でなければならないのだった。
ダイナミック・パブリッシングを利用する場合、データベースは MySQL, PostgreSQL, SQLite (v2) をお使いください。SQLite (v3) では動作しません。また、ウェブサーバーとして Apache を使用している場合 .htaccess ファイルが利用可能である必要があります。
SQLite 3 を使っている場合は,「公開方法」の欄がそもそも表示されない。
SQLite 3 のデータベースを SQLite 2 の形式に変換する。SQLite のデータベースはファイルが1つだけであり,コマンド一発で変換ができる。Vine Linux 4.1 の場合,SQLite 3 のコマンド sqlite3 はパッケージ「sqlite3」に,SQLite 2 のコマンド sqlite はパッケージ「sqlite-tools」に含まれているので,それぞれインストールする。
SQLite 3 のデータベースのファイル名は mydb3.db,新しく作る SQLite 2 のデータベースのファイル名を mydb2.db とすると,次のコマンドで変換ができる。SQLite 2 から SQLite 3 への変換も同様で,この逆をやるだけである (SQLite Version 3 Overview)。
mt-config.cgi では,データベースに SQLite 2 を使うことを指定してやる必要がある (データベースの設定(SQLite) | Movable Type 4 ドキュメント)。ディレクティブ「UseSQLite2 1」を追加する。
SQLite 2 にすれば,操作メニューには上の図のように「公開方法」の欄が表示される。
公開方法として「アーカイブテンプレートのみダイナミックで構築する」を選択し,設定を保存する。そして,個別ページを見てみると…真っ白になってしまった。
調べてみると,必要な PHP モジュール (ライブラリ) と Perl モジュールが不足していることが分かった。ライブラリとしては,PHP5 から SQLite をつかうためのもので,Vine Linux 4.2 では「php5-sqlite」パッケージである。
他のデータベースのときも同様で,MySQL なら php5-mysql,PostgreSQL なら php5-pgsql をインストールする必要がある。
Perl モジュールとしては,DBD::SQLite2 と DBI が必要である。DBD::SQLite2 については,すぐに気がついてインストールしたのだが,それでも真っ白のまま。DBI をインストールしたところ,正しく表示されるようになった。DBI をインストールしていなくても SQLite 3 では動いていたので,気がつかなかったのである。
DBI のインストール後,Apache2 の再起動が必要だった。これで完了。メデタシメデタシ。
SQLite 2 と SQLite 3 の関連を表にしてまとめておく。コマンドの番号のつき方と,Perl モジュールの番号のつき方が違うので混乱しやすい。注意が必要。
SQLite 2 | SQLite 3 | |
コマンド (rpm パッケージ) | sqlite (sqlite-tools) | sqlite3 (sqlite3) |
PHP5 rpm パッケージ | php5-sqlite | php5-sqlite3 ※ |
Perl モジュール | DBI DBD::SQLite2 |
DBI DBD::SQLite |
mt-config.cgi | ObjectDriver DBI::sqlite Database /.../mydb2.db UseSQLite2 1 |
ObjectDriver DBI::sqlite Database /.../mydb3.db |
※現在の MT4.1 では,SQLite 3 ではダイナミックパブリッシングに対応していないので,php5-sqlite3 はインストールしても意味がない。
上の表で,mt-config.cgi の欄は,ブラウザの幅が狭いと途中で改行されているように見えてしまうので,少しだけ注意。
Posted by n at 2008-02-21 21:53 | Edit | Comments (0) | Trackback(0)
Master Archive Index
Total Entry Count: 1957