【Movable Type 移行記】その7
Posted by ramhorn05j
突然、サイトの再構築が出来なくなってしまいました。
エラーが発生しました:
エントリー・アーカイブ「(エントリータイトル)」の再構築に失敗しました: テンプレート「エントリー・アーカイブ」の再構築に失敗しました: <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>の一切を取り除いていますが、しかし、これではせっかくモジュールとして切り貼りした項目が宙に浮くことに。何より、メンテナンス性の観点から不便極まりない。どうにかして解決出来ないものなのか……