Movable Type 備忘録

 
  

 再構築するとエラーになってしまう

大変なことになりました (つω-`。)

わたしのMovableType(ムーバブルタイプ)…新規エントリを作成しても保存されなくなってしまいました。
しかも、サイトの再構築さえできない状態で、何が行ったのか分かりません。

わたし…かなり環境をいじくりまわしました。

でも、気を取り直してさっそく調査したところ、やっと原因が分かりましたぁ

原因

原因はデータベースにあったようです。
こちらの過去ログに同じ現象でトラブってる人がいました。

わたしのカスタマイズで、余計なことやってしまったのかと思ってドキドキでしたが、わたしが悪いわけではなかったようです (; ̄∇ ̄A

MovableType(ムーバブルタイプ)のデフォルトでは、バークレーDBというデータベースが使われるそうですが、このデータベースがくせ者らしく、エントリ数が増えると再構築時にサーバーに負荷がかかってしまい、サーバー側からエラーが出るとのことです。
エラーメッセージは、再構築時に「500 Internal Server Error」というメッセージがでたら、おそらくわたしと同じ原因だと思われます。

たかが、40弱のエントリくらいでパンクしないで欲しいです (-д-;)

対策1 - これからMovableType(ムーバブルタイプ)をインストールする人

これからMovableType(ムーバブルタイプ)をインストールする人は、MovableType3.2をSQLite対応でインストールするで説明していますので、 参考にしてください。
そうすれば、わたしみたいなトラブルを回避できます

データベースをインストール時からSQLiteを使用する為の手順を記載しています。

対策2 - 既にインストール済のわたしと同じ現象の人

この人( わたしも含む )は、現状のデータベース、バークレーDBからSQLiteに変換する必要があります。

変換方法は、腐女子のMovableTypeカスタマイズ感想文様を参考にさせていただきました。

  • mt-config.cgiを開き、63、64行目のコメント「#」を外します。
    具体的には以下のように変更します。

    変更前
    # ObjectDriver DBI::sqlite
    # Database /path/to/sqlite/database/file
    変更後
    ObjectDriver DBI::sqlite
    Database ./db/mtdb
    
    
  • 次に、75行目にコメント「#」がついている人は外してください。
    コメントを外さないと変換されないようです。

    変更前
    # DataSource  /home/sites/lolipop.jp/users/lolipop.jp-cololipo7/web/mt/db
    変更後
    DataSource  /home/sites/lolipop.jp/users/lolipop.jp-cololipo7/web/mt/db
    
    
  • 保存した mt-config.cgi をサーバーにアップロードします。
    アップロード後、mt/mt-db2sql.cgi をブラウザ上から起動すると、ファイルの変換が始まります。
    最後に、

    Done copying data from Berkeley DB to SQL database! All went well.
    
    

    が表示されれば、変換成功です。

  • 再度、mt-config.cgiを開いて75行目をコメント「#」して、サーバーにアップロードします。

    変更前
    DataSource  /home/sites/lolipop.jp/users/lolipop.jp-cololipo7/web/mt/db
    変更後
    # DataSource  /home/sites/lolipop.jp/users/lolipop.jp-cololipo7/web/mt/db
    
    
  • 最後に mt.cgi をブラウザ上から起動して、変換されたことを確認してください。
    変換されていば、エントリ数が以前の数になっているはずです。

    エントリ数が元に戻っていない場合、各CGIファイルを700 ⇒ 755にして再度、mt/mt-db2sql.cgi を実行してみてください。
    わたしの場合は、700では変換されませんでした。

エラーの原因を知る方法

mt-config.cgi の402行目に SafeMode という行のコメントを外して、以下のように変更した後、再構築することによりエラー内容が分かるようになるそうです。

変更前
# SafeMode 0
変更後
SafeMode 1

1度に再構築するエントリ数を変える方法

mt-config.cgi の228行目に EntriesPerRebuild という行があります。これを以下のように変更することにより、1度に再構築するエントリ数を変更することができます。

エントリ数を40 ⇒ 10に変更する場合、
変更前
# EntriesPerRebuild 40
変更後
EntriesPerRebuild 10

世の中、いろいろ詳しい人がいてホント助かりましたぁ。
こちらから環境設定ファイル( mt-config.cgi )についてのマニュアルを見ることができます。

SEE YOU♪

- 2007.05.18 追記 -

日別、週別、月別アーカイブに関しては、以下のmt/lib/MT/App/CMS.pm内を変更することで、1度に再構築するファイル数を減らすことができます。

lib/MT/App/CMS.pm

  1. my %Limit_Multipliers = (
  2.     Individual => 1,
  3.     Daily => 2,
  4.     Weekly => 5,
  5.     Monthly => 10,
  6.     Dynamic => 5,
  7. );

上記青い数値は、エントリ再構築時のページ数(EntriesPerRebuild)に数値を掛け算した値が、各アーカイブの1度に再構築できるページ数となります。

  • 日別アーカイブ:EntriesPerRebuild × 2(件)
  • 週別アーカイブ:EntriesPerRebuild × 5(件)
  • 月別アーカイブ:EntriesPerRebuild × 10(件)
  

 Trackback Pings(5)

from + no rule blog +

週末にMovableTypeを今更アップグレードしました。 3.15が問題もなく...

from Weblog * raison detre

再構築が500エラーが出て、出来なくなってしまったのでDBを変更しました。 変更...

from Melodies of Pianoman

再構築を行うと、遅い上に「500 Internal Server Error」と...

from オラオラ

ぎゃ〜!やってしまいました。 テンプレートのカスタマイズをしてったら、いきなり500エラーです。 うわっ、どうしよ・・・ エラーが発生するのは「カテゴリ...

from 女でも工事屋になりたかったのです

お客様のホームページをMovableTypeで作っていますが、だんだん再構築が重くなって、ついには再構築できな

 Comments(6)

#1: Posted by birkin @ June 26, 2006 [REPLY]
user-pic

はじめまして。
私も同じ現象がずっと前から起こり、更新できなくなってしまいました。でも「インデックス・テンプレートのみを再構築」を再度行うと
アップできていたので、それでなんとかしのいでいたのですが、とうとうコメントを投稿してもエラー500が表示されるようになってしまいました。。
そしてこれも「インデックス・テンプレート…」で再構築すると反映されます。

また、カテゴリーで違うものが表示されたり、全く表示されなかったり、ということが起こっていて、
上記のことを何度も試してみたのですが、

>アップロード後、mt/mt-db2sql.cgi をブラウザ上から起動する

と、まだエラー500が出てしまうのです(泣)
ちなみに今使っているのは、バージョン3.2-ja-2 で、エントリー数は147です。
色々試しているうち、全部のcgiの属性(呼出・書込・実行全て)を755にしていますが、これも問題でしょうか。。

これだけでは情報不足だとは思いますが、もし何か思い当たることがありましたら教えていただけないでしょうか?
申し訳ございませんが、宜しくお願いいたします。

#2: Posted by bzbell @ June 26, 2006 [REPLY]
user-pic

>>1 birkin さん

こんにちわ^^

> 色々試しているうち、全部のcgiの属性(呼出・書込・実行全て)を755にしていますが、これも問題でしょうか。。

いえ、パーミッションは問題ないと思います。

birkinさんが使われているデータベースはやっぱりBerkeleyDBなんでしょうか。
あとmt-db2sql.cgi には不具合があるそうです。
わたしも以前、SQLite ⇒ MySQL変換の際に失敗したことがあります。

なので、以下のエントリを参考にデータベースの変換を行ってみてください。
MovableTypeでBerkeleyDB、SQLiteからMySQLに移行する
この記事はわたしがSQLite ⇒ MySQLに変換したときの記事ですが、例えば、BerkeleyDB ⇒ SQLite でもできますので、1度試してみてはどうでしょうか。
また、変換の際はMovableTypeからログアウトして行ってください。

では。。。

#3: Posted by birkin @ June 27, 2006 [REPLY]
user-pic

>>2 bzbell さん

早急にご返答頂き、本当にありがとうございます!

私のはBerkeleyDBのままです。。教えていただいたエントリーを見ながら、MySQLへの変換を試してみますね!

ちょっと拝見したところ結構お時間かかりそうなので、週末じっくり取り掛かりたいと思います。

またご連絡させていただきますね、本当にありがとうございました~~!!!

#4: Posted by bzbell @ June 27, 2006 [REPLY]
user-pic

>>3 birkin さん

こんにちわ^^
うまくいくといいですね:pp_01.gif:
がんばってください:exclam.gif:

もしbirkinさんが使われているサーバがロリポップの場合には、MySQL への変換ではなく、SQLite に変換した方がいいですよ。
ロリポップの MySQL サーバーはいろいろあるようで、再構築などにやたら時間がかかります。

わたしの記事では MySQL を紹介していますが、入力内容がちょと違いだけでやり方はいっしょです。
また何かありましたらご連絡ください。

では。。。

#5: Posted by 嶋崎 @ April 17, 2008 [REPLY]
user-pic

はじめまして、まったく同じトラブルにてググッてたどりつき、お陰様で解決することが出来ました。
大変助かりましたので、トラックバックさせていただきました。
ありがとうございました。

#6: Posted by Author Profile Page bzbell @ April 17, 2008 [REPLY]
user-pic

>>5 嶋崎 さん

こんばんわ^^

トラバ & コメントありがとうございます。
お役に立ててよかったですワクワク

 

 Post a Comment

 

コメント用フィード