Movable Type 3.2日本語版がリリースされて10日ほど経ちましたが、データベースとしてBerkeley DBを使っていると、いろいろと不具合が出ることが確認されています。
不具合対策をしたバージョンがリリースされるとのことです。
ただ、Berkeley DBは簡易的なデータベース管理システムで、Movable Typeを動作させるのには、機能/性能的に十分だとは言えないです。
Movable Typeでは、Berkeley DB以外に、MySQL/PostgreSQL/SQLiteのデータベース管理システムを使うこともできます。
これらに変えれば、現時点の不具合を回避することができます。
また、サーバーの構成によっては、再構築のスピードが上がるというメリットもあります。
ということで、Movable Type 3.1xからMovable Type 3.2へアップグレードする際に、データベースも変換すことをお勧めします。
このエントリーでは、その手順を解説します。
1.現在のMT環境をバックアップ
万が一の事態に備えて、現在のMovable Type 3.1xの環境を、ご自分のパソコンに丸ごとダウンロードし、バックアップしておきます。
2.Movable Type 3.2を入手
SixApartのサイトから、Movable Type 3.2をダウンロードして、自分のパソコンで解凍します。
3.mt-config.cgiの設定
Movable Type 3.1xでは、設定ファイルの名前は「mt.cfg」でした。
一方、Movable Type 3.2では、設定ファイルの名前が「mt-config.cgi」に変わっています。
解凍したファイルの中に、「mt-config.cgi-original」というファイルがあります。
Movable Type 3.1xのmt.cfgを元にしてこのファイルを書き換え、「mt-config.cgi」というファイル名で保存します。
4.Movable Type 3.2のアップロード
Movable Type 3.1xをインストールしているディレクトリに、Movable Type 3.2を上書きします。
また、Movable Type 3.2ではCGIのファイルがいくつか増えています。
それらのパーミッションを書き換えて、実行可能にしておきます。
5.mt-check.cgiを実行
Webブラウザを起動し、「http://Movable Typeのインストール先/mt-check.cgi」に接続し、mt-check.cgiを実行して、結果を確認します。
6.mt.cfgの削除
Movable Typeのディレクトリから、mt.cfgファイルを削除します。
7.Movable Type 3.2へのアップグレード
Webブラウザを起動し、「http://Movable Typeのインストール先/mt.cgi」に接続します。
ログイン画面が表示されますので、ログイン名とパスワードを入力してログインします。
すると、「インストール完了」のメッセージが表示されますので、「アップグレードの開始」ボタンをクリックします。
しばらくの間、アップグレードの処理が行われます。「アップグレードが完了しました」と表示されたら、アップグレードは完了です。
「Movable Typeに戻る」ボタンをクリックして、Movable Typeにログインできることを確認します。
また、Movable Type 3.1xからデータが引き継がれていることも確認します。
8.mt-db-convert.cgiをインストール
今の段階では、データベースはまだBerkeley DBのままです。これを、MySQLなどに変換します。
Movable Type 3.2には「mt-db2sql.cgi」というCGIが入っていて、それで変換することができますが、SQLiteに変換する際には時間がかかって、途中で500エラーが出ることがあるという問題があります。
そこで、小川宏高さんのBlogの「Ogawa::Memoranda」で配布されている「mt-db-convert.cgi」を利用します。
このページに接続して、Zipファイルをダウンロードします。
解凍すると2つのファイルができます。そのうち、「mt-db-convert.cgi」を、Movable Typeのインストール先ディレクトリにアップロードします。
そして、そのファイルのパーミッションを書き換え、実行可能にします。
9.SQLiteへの変換
「http://Movable Typeのインストール先/mt-db-convert.cgi」に接続して、mt-db-convert.cgiを実行します。
データベースをSQLiteに変換する場合は、「Destination DB Configuration」の部分の「Object Driver」で「SQLite」を選び、その下の「Database」の欄に変換先のファイル名を入力します。
設定が終わったら、「Convert」ボタンをクリックします。
↓SQLiteへ変換する場合の設定の例(クリックすると別ウィンドウに元のサイズで表示されます)
![]()
なお、変換先のファイルを出力するディレクトリは、あらかじめ作っておく必要があります。
また、そのディレクトリはCGIから書き込みができるようにパーミッションを設定しておく必要があります。
10.MySQL/PostgreSQLに変換
データベースをMySQLかPostgreSQLに変換する場合は、以下の手順を取ります。
- mt-db-convert.cgiに接続します。
- 「Destination DB Configuration」の部分の「Object Driver」で適切なドライバーを選びます。
- その下の「Database」「DBUser」「DBHost」「DBPassword」の各欄に、MySQL/PostgreSQLに接続するための設定を入力します。
- 設定が終わったら、「Convert」ボタンをクリックします。
↓MySQLに変換する場合の設定の例(クリックすると別ウィンドウに元のサイズで表示されます)
![]()
11.mt-config.cgiの書き換え
mt-db-convert.cgiで変換が終わると、mt-config.cgiの書き換え例が表示されます(Berkeley DBの設定の削除と、各種SQLの設定の有効化)。
その指示に従って、mt-config.cgiを書き換え、アップロードしなおします。
12.作業終了
ここまででアップグレードの作業は終了です。
Movable Typeにログインして、既存の環境が引き継がれているかどうかを確認します。
13.ファイルの削除
アップグレードが無事に済んでいれば、不要なファイルを削除します。
まず、Movable Typeのディレクトリから、mt-check.cgi/mt-db2sql.cgi/mt-db-convert.cgiを削除します。
また、「images」ディレクトリも削除します。
さらに、Berkeley DBのデータベースも、ディレクトリごと削除することができます(ただし、万が一に備えて、バックアップを取っておくことをお勧めします)。
14.補足
レンタルサーバーでは、データベースはMySQLが使えるところが多いと思います。
ただ、仕様に明記されていなくても、SQLiteを使えるレンタルサーバーもあります。
mt-check.cgiを実行した時に、「サーバーには、DBD::SQLiteがインストールされています。」と表示されれば、SQLiteも使えるはずです。
ロリポップはMySQLを使うことができますが、MySQLのサーバーの数が少なく、動作が重いといわれています。
実際、私も以前はロリポップでMySQLを使っていましたが、動作が重かったです。
ところが、CHEEBOWさんのBlog「Movable Typeで行こう」によると、ロリポップでSQLiteが使えるようになったとのことです。
実際に試してみましたが、MySQLのときよりも動作が軽くなりました。
ロリポップユーザーの方は、SQLiteへの移行を試されると良いと思います。










コメントはスレッド表示になっています。
また、スレッドの先頭のコメントに対する返信には、先頭に矢印を表示しています。
こんにちはー。うちは初めてMTを入れたときに ロリポップの
マニュアルにしたがって、MySQLにしようとしたのですが、
何度やっても エラーになってしまって、できなかったので、仕方なく
ずっとBerkeley DBを使ってきました。
3.2にアップグレードしたら SQLiteにしてみようと思います。
こんにちはー。来週にならないと アップグレード作業できないかな、と思ってたのですが気になったので、今日 やってしまいました。せっかくですので、DBも SQLiteに 変換、やっと Berkeley DB を卒業できました。カテゴリアーカイブの再構築中にエラーになってしまうのですが、これは どうしようもないんでしょうか?
壱さん、こんにちは。
わざわざお越しいただき、なおかつソースまで調べていただいてどうもありがとうございました。
データベースのせいでもMTのせいでもなかったのですね。
テーブルでくくるの、気に入っていたのですけど・・・。
それが原因となれば、直すしかないです。
これからひと頑張りします。
どこへ書き込んでよいものか迷ったのですが、
とりあえず関連記事へ書き込ませていただきました。
ご迷惑でしたら削除して下さいませ
何度もすみません。
小川さんのサイトさんでちょっと聞いてみてます。
(´・(●●)・)(o´_ _)oペコリ