2005年11月24日 (木)

【Movable Type 移行記】その7

突然、サイトの再構築が出来なくなってしまいました。

エラーが発生しました:

エントリー・アーカイブ「(エントリータイトル)」の再構築に失敗しました: テンプレート「エントリー・アーカイブ」の再構築に失敗しました: <MTInclude>タグでエラーが発生しました: 読み込むテンプレート・モジュール「(<MTInclude>でモジュール化しているサイドバーの項目)」が見つかりません。

勿論、<MTInclude>タグで分別しているテンプレートモジュールは存在しているし、第一、先日までしっかりと再構築出来ていたのだから、どこかに問題が発生しているということなのだろうけど……新規エントリーの投稿でも同様のエラーが発生するし、一体どうなっているのだろう。

追記

手当り次第に色々と試してみました。

とりあえず<MTInclude>でモジュール化しているサイドバー項目を、一旦エントリー・アーカイブに戻します。すると、一応「<MTInclude>が見つからない」というエラーは無くなりました。しかし、今度はブログの読み込みに失敗してしまいます。

うろ覚え:

エントリー・アーカイブ「(エントリータイトル)」の再構築に失敗しました: 「(何かのタイトル)」の読み込みに失敗しました: 「(何かのパス)」を関連づけられません: Cannot allocate memory

なんでも、エントリー数が多くなると再構築時に負荷が掛かる為、サーバー側からエラーを返されることがあるという。たかが22件のエントリーでそんな馬鹿な……と思いつつも、念の為に環境設定を変更します。

mt-config.cgi:

# SafeMode 0
のコメントアウトを外して
SafeMode 1
とする。

さらに
# EntriesPerRebuild 40
のコメントアウトを外して
EntriesPerRebuild 5
とする。

「EntriesPerRebuild」は一度に再構築する量を調節する項目らしく、これは5エントリーの設定です。これで、やっと再構築が完了。しかし、<MTInclude>が利用出来ないのはあまりにも不便なので、もう一度<MTInclude>を挿入して再構築を試行してみることに……最初のエラーへ。

3カラムやリンクも負荷を高める原因らしいのですが、もしや重いと評判のBerkeley DBが駄目なのかもしれないと思い立ったところで、SQLiteへの移行を目論む。

ロリポップの場合:

(1)mt-config.cgi:63行目、64行目のコメントアウト(#)を外す。設定が分からないので、デフォルトのまま。

ObjectDriver DBI::sqlite
Database ./db/mtdb

(2)バークレーからSQLiteに変換する為、この時点で70行目以下のバークレーの設定はコメントアウトせずにそのままにしておく。

DataSource ./db

(3)この状態でFTPにてアップ。

(4)MTのCGIを設置しているディレクトリに「db」フォルダを作成しておく。あればそのまま。

(5)mt-db2sql.cgiを起動すると、ファイルの変換が始まる。

最後に
「Done copying data from Berkeley DB to SQL database! All went well.」
というメッセージが出れば変換完了。

(6)mt-config.cgi:70行目以下のバークレーの設定をコメントアウトしておく。

# DataSource ./db

(7)再度FTPにてmt-config.cgiをアップ、動作すれば問題なし。

参考:SQLiteの導入とバークレーからの変換

正しいやり方なのかどうかは一寸分かり兼ねますが、動作はしている様子。しかし<MTInclude>エラーが消えることはなく、再構築には失敗してしまいます。仕方が無いので、今はエントリー・アーカイブから<MTInclude>の一切を取り除いていますが、しかし、これではせっかくモジュールとして切り貼りした項目が宙に浮くことに。何より、メンテナンス性の観点から不便極まりない。どうにかして解決出来ないものなのか……

ARCHIVES

  • Browse All Archives [1746] »

RECENT ENTRIES