Movable Type + SQLite
3.2-ja では BerkeleyDB 使用による再構築の不具合が発生しておりますが、それを差し引いても BerkeleyDB は根本的に動作が遅いというのは否めません。
ということで、Movable Type + SQLite を使用する場合の設定方法です。DBの設定が簡単&高速なので、特に自宅サーバで BerkeleyDB を使用されている方(で MySQL の環境構築が困難な方)はこちらに乗り換えられることをお勧めします。
以前、MySQL(+PHP) の環境設定でかなりてこずった経験があるので、「SQLite も似たようなもの」という先入観がありましたが、実際に試してみるとその想いは完全に覆されました。後述する Perl モジュールの DBD-SQLite さえインストールできれば、あとの設定は BerkeleyDB 並、つまりディレクトリを作成して、mt-config.cgi にそのパスを記述するだけです。
1項はWindows自宅サーバでの Perl モジュールの DBD-SQLite インストール方法について記しています。レンタルサーバの場合は1項を読み飛ばしてもらえれば結構ですが、DBD-SQLite がインストールされていることが前提となります(使用可否は mt-check.cgi の実行画面から確認してください)。
以下、設定方法です。
1.DBI-SQLite のインストール
SQLite用Perlモジュールの DBI-SQLite をインストールします。Perlがインストールされていることが前提です。
1.1 PPMによるインストール
MS-DOSプロンプトを開いて下記を実行します。下記は5.6.xの例です。
C:¥>ppm
PPM interactive shell (2.2.0) - type 'help' for available commands.
PPM> install DBD-SQLite
Install package 'DBD-SQLite?' (y/N): y
Installing package 'DBD-SQLite'...
Downloading http://ppm.activestate.com/PPMPackages/5.6/MSWin32-x86-multi-thread/DBD-SQLite-1.08.tar.gz ...
Installing C:¥usr¥site¥lib¥auto¥DBD¥SQLite¥SQLite.bs
Installing C:¥usr¥site¥lib¥auto¥DBD¥SQLite¥SQLite.dll
Installing C:¥usr¥site¥lib¥auto¥DBD¥SQLite¥SQLite.exp
Installing C:¥usr¥site¥lib¥auto¥DBD¥SQLite¥SQLite.lib
Installing C:¥usr¥html¥site¥lib¥DBD¥SQLite.html
Installing C:¥usr¥site¥lib¥DBD¥SQLite.pm
PPM> quit
1.2 上記がエラーになる場合
使用している Perl のバージョンによって
のいずれかのページを開いて、リストから DBD-SQLite-1.09.zip(5.6.xは1.08が最新の模様)を探し、クリックしてダウンロードします。バージョンは更新適宜されますので、"DBD-SQLite" で検索し、タイムスタンプの新しいバージョンを選ぶと良いでしょう。
ダウンロードしたアーカイブを解凍して DBD-SQLite.ppd があることを確認してください。
次にMS-DOSプロンプトを開き、さきほど解凍した DBD-SQLite.ppd があるフォルダまで移動して、
C:¥> cd DBD-SQLite-1.09_zip
C:¥DBD-SQLite-1.09_zip> ppm install DBD-SQLite.ppd
を実行します。成功すると下記のようなメッセージが表示されます。下記は5.8.xの例です。
====================
Install 'DBD-SQLite' version 1.09 in ActivePerl 5.8.6.811.
====================
Installing D:¥usr¥site¥lib¥auto¥DBD¥SQLite¥SQLite.bs
Installing D:¥usr¥site¥lib¥auto¥DBD¥SQLite¥SQLite.dll
Installing D:¥usr¥site¥lib¥auto¥DBD¥SQLite¥SQLite.exp
Installing D:¥usr¥site¥lib¥auto¥DBD¥SQLite¥SQLite.lib
Installing D:¥usr¥html¥site¥lib¥DBD¥SQLite.html
Files found in blib¥arch: installing files in blib¥lib into architecture dependent library tree
Installing D:¥usr¥site¥lib¥DBD¥SQLite.pm
Successfully installed DBD-SQLite version 1.09 in ActivePerl 5.8.6.811.
メッセージが表示されるまで少し時間がかかるようなので慌てずに待ちましょう。
2.データベースの変換
2.1 Movable Type 新規インストールの場合
任意のエディタで mt-config.cgi(mt-config.cgi-original をリネームまたはコピーしたもの)を開き、
### SQLite Configuration - SQLite requires only the path to your SQLite
# database file.
#
# ObjectDriver DBI::sqlite
# Database /path/to/sqlite/database/file
の部分を設定します。ObjectDriver は行頭の「#」を外します。Database という項目は、行頭の「#」を外し、項目名の後ろに、ルートからの絶対パスでデータベースファイル名までを指定します。
これから設定するデータベースが、
- データベースファイルまでのパス:/hogehoge/MT-3.2/SQLite
- データベースファイル名:mt
である場合、下記のように設定します。
### SQLite Configuration - SQLite requires only the path to your SQLite
# database file.
#
ObjectDriver DBI::sqlite
Database /hogehoge/MT-3.2/SQLite/mt
データベースファイル名は任意の名称で結構です。またデータベースファイルまでのディレクトリは mt.cgi 実行前に予め作成しておいてください。また作成したディレクトリのパーミッションは、CGIスクリプトから書き込めるよう変更(755/777等)をしておきます。
CGIPath および StaticWebPath は説明を割愛しますので適宜設定してください。
これで mt.cgi を実行すればインストールが開始されます。正常に設定されていない場合は mt.cgi 実行後にエラーメッセージが表示されますので、内容を確認して修正・再実行してください。
2.2 Movable Type アップグレード(BerkeleyDB から SQLite へ移行)の場合
ここでは2つの方法を提示します。ひとつは、移行用スクリプト mt-db2sql.cgi を用いた正規の方法です。もうひとつは、mt-db2sql.cgi 実行では500エラーになる可能性があるので、Ogawa::Memoranda さんの mt-db-convert.cgi を利用する方法を紹介します。
個人的には後者の方法をお勧めします。
なお本項(および3項)の作業は、アップグレード前後のどちらの時点でも実施可能です。
2.2.1 mt-db2sql.cgi を使用する場合
任意のエディタで mt-config.cgi(mt-config.cgi-original をリネームまたはコピーしたもの)を開き、移行する前準備のために BerkeleyDB と SQLite の両方のパスを設定します。
- BerkeleyDBのディレクトリ:db
- SQLiteデータベースファイルまでのパス:/hogehoge/MT-3.2/SQLite
- SQLiteデータベースファイル名:mt
とした場合、下記のように設定します。
### SQLite Configuration - SQLite requires only the path to your SQLite
# database file.
#
ObjectDriver DBI::sqlite
Database /hogehoge/MT-3.2/SQLite/mt
#
#
### BerkeleyDB Configuration - BerekelyDB requires only the path to your
# database directory.
#
DataSource ./db
SQLite のデータベースファイル名は任意の名称で結構です。またデータベースファイルまでのディレクトリは mt-db2sql.cgi 実行前に予め作成しておいてください。また作成したディレクトリのパーミッションは、CGIスクリプトから書き込めるよう変更(755/777等)をしておきます。
この後、ブラウザより mt-db2sql.cgi を実行します。
この実行について、自宅サーバで500エラーになる場合は下記のリストのように、MS-DOSプロンプトからの実行に変更してみてください。またその際、mt-config.cgi の Database に設定した場所にファイルが生成されていると思われますので、そのファイルを一旦削除することをお忘れなく。
C:¥> cd hogehoge¥MT-3.2
C:¥hogehoge¥MT-3.2> perl mt-db2sql.cgi
Content-Type: text/html
<pre>
Loading database schema...
Loading data...
MT::Author
1
MT::Blog
1
MT::Category
1
2
3
:
(略)
:
MT::Comment
1
2
3
:
(略)
:
MT::Entry
1
2
3
:
(略)
:
MT::IPBanList
MT::Log
実験した限りでは、ここまで表示されたあと応答が返ってこなくなり、しばらくこのまま放置。エクスプローラーを起動して、新しく作られたDBファイル(mt)のタイムスタンプが更新されないことを確認して Ctrl + c で強制終了させました(この後 Movable Type は正常に動作しました)。
移行が完了したら mt-config.cgi の BerkeleyDB の設定箇所を、
### BerkeleyDB Configuration - BerekelyDB requires only the path to your
# database directory.
#
# DataSource ./db
と、コメントアウト(行頭に「#」を付与します)して、mt.cgi を実行します。
2.2.2 mt-db-convert.cgi を使用する場合
下記のページより mt-db-convert.zip をダウンロードします。
アーカイブを解凍すると mt-db-convert.cgi がありますので、CGIPath(mt.cgi があるディレクトリ)にアップロードします。ブラウザより mt-config.cgi を起動します。
起動画面で下記の項目をそれぞれ設定します。
- Source DB Configuration
- DataSource:BerkeleyDB のパス(mt.cgi または mt.config.cgi の設定を使って自動的に入力されます。このパスは絶対パスになっていることが推奨事項になっています)
- ObjectDriver:BerkeleyDB
- Destination DB Configuration
- ObjectDriver:SQLite
- DataBase:SQLite のパス(2.1項の Database と同じ内容)
SQLite のデータベースファイル名は任意の名称で結構です。またデータベースファイルまでのディレクトリは mt-db-convert.cgi 実行前に予め作成しておいてください。また作成したディレクトリのパーミッションは、CGIスクリプトから書き込めるよう変更(755/777等)をしておきます。
設定が完了したら画面下の「Convert」をクリックします。次ページで変換結果と mt-config.cgi の設定内容
Done copying data from DBM to DBI::sqlite! All went well.
Your recommended setting
-------------------------------------
# DataSource /hogehoge/MT-3.2/db
ObjectDriver DBI::sqlite
Database /hogehoge/MT-3.2/SQLite/mt
-------------------------------------
が表示されます。設定内容(青色)は mt-config.cgi の
### SQLite Configuration - SQLite requires only the path to your SQLite
# database file.
#
ObjectDriver DBI::sqlite
Database /hogehoge/MT-3.2/SQLite/mt
#
#
### BerkeleyDB Configuration - BerekelyDB requires only the path to your
# database directory.
#
# DataSource /hogehoge/MT-3.2/db
の青色部分に該当しますので、それぞれコピー&ペーストします(BerkeleyDB の設定をコメントアウトするのもお忘れなく)。
あとは mt.cgi を実行すればOKです。
下記のエントリーも参考になります。
以上です。
