7年近く放置したままだった Movable Type のブログをアップグレードした顛末です。
アップグレード方法をリサーチしていてもう一つわかったことは、Movable Type 5 以降、データベースは「MySQL」でなければならないということだ。「MySQL」ではないデータベースを利用している場合「MySQL」に移行してやらなければならないのだ。
SQLiteからMySQLへデータベースの移行
利用しているデータベースの確認
アップグレードするブログを運用しているサーバーはロリポップ!のライトプランである。
ロリポップのユーザー専用ページにログインし、「サーバーの管理・設定」タブ(①)から「データベース」を選んでみる(②)。データベースにMySQLを利用している場合、ここに利用しているデータベースが表示されるはずなのだが表示されない。
FTPクライアントでMT本体が格納されているディレクトリにアクセスしてみる(MT本体が格納されているディレクトリは特に変更していなければフォルダ名「mt」で、私の環境では「cgi」フォルダの中にある)。
ロリポップ!ではユーザー専用ページに「ロリポップ!FTP」というファイルマネージャーが用意されているので、もちろんそれを利用してもよい。
MT本体が格納されているディレクトリにある「mt-config.cgi」(③)というファイルの中身を確認してみよう。
「mt-config.cgi」にはデータベースに関する情報が書き込まれているが、この中身を見れば、確かに利用しているデータベースが「SQLite」であることが記述されていた(④)。
ということで、「SQLite」から「MySQL」へデータベースの移行が必要ということが確認できた。
MySQLデータベースの新規作成
そこで、まず先ほどのロリポップのユーザー専用ページのデータベースを開き、「データベース作成ボタン」をクリックしデータベースを作成する。
「作成するサーバー」はポップアップメニューで選択できるがデフォルトのままでいいだろう(①)。「データベース名」(②)と、「接続パスワード」(③)を決めて入力し、「作成」をクリックする。
すると、設定したデータベースについての情報が同じページに表示されるようになる(④)。また、「phpMyAdmin」というWebページからデータベースを操作するプログラムが利用できるようになったこともわかる(⑤)。
mt-db-convert.cgi の入手とアップロード
この後の作業については、こちらのページ→「MOVABLETYPE SQLITEからMYSQLへの移行」が役に立った。
残念ながら、説明の画像がリンク切れしており表示されないのだが、そこを飛ばして読んでも、手順が順を追って説明されているのでわかりやすい。
そこで紹介されているのは、Ogawa::Memorandaさんが配布されているというmt-db-convert.cgiを利用する方法。
実はそのダウンロードページへのリンクも切れているのだが、現在はこちら→ogawa/mt-DBConverterのリンクからダウンロードすることができる。
ダウンロードページを開いたら、「Clone or download」をクリックして、「Download ZIP」(①)を選択する。
ダウンロードしたzipファイルを解凍したら、該当するバージョンのmt-db-convert〇〇.cgi(私の場合はmt-db-convert33.cgi)をFTPクライアントを使って「mt」フォルダにアップロードする。
このときの留意点は、このcgiファイルのアクセス権を755にすることだ。
この設定はFTPクライアントでもできるのだと思うが、私は「ロリポップ!FTP」(②)で行った。
「ロリポップ!FTP」を開いたら、アップロードした「mt-db-convert〇〇.cgi」を開き、[現在の属性:]を「755」(③)にしてページ下方の「保存」ボタンをクリックすれば良い。
これでOKと思うが、私が試行する中でもうひとつ躓いたのが「mt」フォルダのアクセス権で、これも755になっていることを確認する。(まあ、デフォルトで755だと思うが、試行する中で777にしていたらcgiは動かなかった。)
mt-db-convert.cgi の設定と実行
ブラウザで アップロードしたmt-db-convert〇〇.cgi のパスを指定して開くと下画像のように設定画面が開く。
左側が現行のデータベースで、右側が移行先のデータベースの設定だ。
左側は何もしなくても自動で入力されるが、いちおう「ObjectDriver:」が「SQLite」で(①)、「Database:」が現行のdbファイルのパスと一致していること(②)を確認しておく。
右側は先ほどロリポップ!で作成したデータベースの設定を入力していけば良いわけだ。
「ObjectDriver:」は「MySQL」(③)を選択。
「Database:」はロリポップで設定した「データベース名」(④)、「DBUser:」は「ユーザー名」(⑤)、「DBPassword:」は「パスワード」(⑥)、「DBHost:」は、「サーバー」(⑦)に、それぞれ対応する。
入力したら「Convert」(⑧)ボタンをクリック。
クリック後、しばらくすると下画像のような表示になって移行作業は完了だ。
移行したデータベースの確認
データベースの移行が成功したかどうかを確認するために、phpMyAdminでデータベースにアクセスする。
ロリポップならユーザー専用ページの「データベース」-「phpMyAdminを開く」(①)をクリック。
「phpMyAdmin」のログイン画面が表示されるので、「ユーザ名:」(②)「パスワード:」(③)を入力、「サーバの選択:」(④)も忘れず選択し「実行」(⑤)をクリック。
「phpMyAdmin」が開いたら、画面左側のサーバー名(⑥)をクリックして、mt_で始まるテーブル名が表示されればOK。
mt-config.cgi の修正
無事に移行が完了したら、「mt」フォルダの「mt-config.cgi」の設定内容をMySQL用に変更する。
「MySQL Configuration」の部分(①)を探し、その下にある「ObjectDriver」以下の部分(②)のコメントアウトを解除(行頭の#を削除)し、mt-db-convert.cgi の設定で入力したのと同じ情報を入力する。(③)。
もう一箇所、移行前のデータベースについての記述部分をコメントアウト(行頭に#を追加)し、上書き保存する。
修正が済んだら、Movable Typeを再構築し、問題がないようならOK。最後にmt-db-convert〇〇.cgi を削除してデータベースの移行は完了。