印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
LinuxMovableType ダイナミックパブリッシングにすると画面が真っ白に

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 ファイルが利用可能である必要があります。

ダイナミック・パブリッシング | Movable Type 4 ドキュメント

SQLite 3 を使っている場合は,「公開方法」の欄がそもそも表示されない。

SQLite 3 から SQLite 2 への移行

SQLite 3 のデータベースを SQLite 2 の形式に変換する。SQLite のデータベースはファイルが1つだけであり,コマンド一発で変換ができる。Vine Linux 4.1 の場合,SQLite 3 のコマンド sqlite3 はパッケージ「sqlite3」に,SQLite 2 のコマンド sqlite はパッケージ「sqlite-tools」に含まれているので,それぞれインストールする。

# apt-get install sqlite3
# apt-get install sqlite-tools

SQLite 3 のデータベースのファイル名は mydb3.db,新しく作る SQLite 2 のデータベースのファイル名を mydb2.db とすると,次のコマンドで変換ができる。SQLite 2 から SQLite 3 への変換も同様で,この逆をやるだけである (SQLite Version 3 Overview)。

$ sqlite3 mydb3.db .dump | sqlite mydb2.db

mt-config.cgi の設定

mt-config.cgi では,データベースに SQLite 2 を使うことを指定してやる必要がある (データベースの設定(SQLite) | Movable Type 4 ドキュメント)。ディレクティブ「UseSQLite2 1」を追加する。

ObjectDriver DBI::sqlite
Database /var/www/mt-db/mydb2.db
UseSQLite2 1
ブログの「公開方法」
ブログの「公開方法」


SQLite 2 にすれば,操作メニューには上の図のように「公開方法」の欄が表示される。

ページが真っ白に

公開方法として「アーカイブテンプレートのみダイナミックで構築する」を選択し,設定を保存する。そして,個別ページを見てみると…真っ白になってしまった。

必要なライブラリとモジュールのインストール

調べてみると,必要な PHP モジュール (ライブラリ) と Perl モジュールが不足していることが分かった。ライブラリとしては,PHP5 から SQLite をつかうためのもので,Vine Linux 4.2 では「php5-sqlite」パッケージである。

# apt-get install php5-sqlite

他のデータベースのときも同様で,MySQL なら php5-mysql,PostgreSQL なら php5-pgsql をインストールする必要がある。

Perl モジュールとしては,DBD::SQLite2 と DBI が必要である。DBD::SQLite2 については,すぐに気がついてインストールしたのだが,それでも真っ白のまま。DBI をインストールしたところ,正しく表示されるようになった。DBI をインストールしていなくても SQLite 3 では動いていたので,気がつかなかったのである。

# cpan -i DBD::SQLite2
# cpan -i DBI
# /etc/init.d/apache2 restart

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)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?