拙著「WordPress Web開発逆引きレシピ」が発売されました。
WordPressの様々なカスタマイズについて、逆引きの形式で取り上げています。
PHP 7.0での動作確認も行っています。
Movable Type 3.2アップグレードの際にBerkeley DBから他のデータベースに変える手順
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への移行を試されると良いと思います。