mt-convert.cgiでSQLite移行とPerl版ダイナミックパブリッシング

ロリポップでは最近 MySQL が非常に遅いが、カスタマイズであちこち覗いていると『 SQLite に移行したほうが良い』という情報をいくつか読んだ。ロリポップにサーバー移転した当初も Berkeley DB から移行するのに MySQL と SQLite と、どちらにしようか随分悩み、検索しまくった。でも・・・・結局わからなくて、ロリポップに手順があったため MySQL へと移行したわけだが、やっぱり最近は遅すぎる。(@_@;) そして色々目にする情報は、みーんな SQLite がいいんだってさ。(~_~;)

で、思い切って SQLite に移行した。専門的な知識はないが、とにかく処理が早いことが一番よ。ロリポップでは MySQL サーバーが現在では12ぐらいあるはずなのに、何故そんなに遅いのでしょうね。(~_~;) ということで、お世話になったサイトの方々のためにもURLを明記して、忘れないうちにさっさとメモしておきましょう。あ、ロリポップのマニュアルでは、SQLite への移行手順はどこにも書いてないですよね。(~_~;)

そして、Movable Typeのデータベースを BerkeleyDB、MySQL、PostgreSQL、SQLite の間で、相互に変換する素晴らしいCGIスクリプトがあったのよ。私はこれを使って MySQL から SQLite に無事移行することができたわ。\(^o^)/ どうもありがとうございました。m(__)m

mt-db-convert.cgi
DB間の相互変換は、従来からMovable Typeに付属しているmt-db2sql.cgiと拙作のmt-sql2db.cgiを組み合わせれば実現できましたが、このスクリプトはそれを単体で実現します。

これ↑を使って簡単にできました。まずはエントリーを書き出してバックアップ。次には、mtのフォルダを全てローカルにダウンロードしてバックアップ。そのほか、テンプレートもバックアップ。(サーバーのどこにあるのか分からないので、私は念のため全てのテンプレをテキストエディタにコピペした)(^^ゞ 

このサイト様のお陰で、何も迷わずに実行できました。ありがとうございました。あぁっと~、一つだけ迷った箇所がありました。この mt-db-convert.cgi を表示させて、いざコンバートする時よ。左が現在のサーバーを現し、右に移行先のサーバーを入れるわけだけど、左ではまず、パスワードを入れなきゃならないの。それと、右では現在のサーバーのフルパスを入れること。また、テキストエリアにカーソルを置こうとしたとき、もし置けない場合は、そこには何も入れなくて良いということ。カーソルが置けるときはそこに何かを入れるべきなのね。でも、後は特に何も入れなくても大丈夫だったわ。

そして全く考えてもいないことだったのが、SQLite はスタティックHTMLのみだったということ。私は MySQL でダイナミックパブリッシングにしていたので、そのままやり終えて再構築し、サイトのアーカイブを表示させてみたらエラーとなっていた。なので、コンバート後に設定をスタティックにやり直したら、ちゃんと表示されるようになった。おっと、もう一つ。カテゴリーやマンスリーへのリンクをクリックすると、その先頭ページ(インデックスページ)が表示されるわけだが、私の場合、アーカイブを全て拡張子 .php で出力するようにしていたため、作成した2つのインデックステンプレートで修正箇所はなく、index.php のままにしないといけなかった。

今日は三つのうち、一つのブログだけ、 Perl版のダイナミックパブリッシングも導入してから、設定をダイナミックパブリッシングに変更したところ、うたい文句どおり、Perl版プラグイン専用タグもエラーにならず無事に表示されていた。おおありがたい。制作者様には、感謝の言葉もありません。m(__)m 引き続き他の2つのブログも、Perl版のダイナミックパブリッシングを導入することにする。プラグインが使えるのでとっても便利よ。(*^_^*) このPerl版のダイナミックパブリッシングについてはまた後日書こうかと思ったが、簡単だったので特に書き留めることもないかもしれない。でも一応・・・・・(^^ゞ

1,解凍したファイルのうち、GetConfig.pl は mt/plugins/ にアップロード。
mt-dynamic.cgi は各ブログの出力先ディレクトリにアップロード、パーミッション【707】に。

2,インデックステンプレートを新規作成
dynamic_init.pl ・・・内容を全てコピペし、【インデックス・テンプレートを再構築するときに、このテンプレートを自動的に再構築する】のチェックをオフにしてテンプレートを保存し、再構築する。
mt-dynamic.php ・・・内容を全てコピペし、【インデックス・テンプレートを再構築するときに、このテンプレートを自動的に再構築する】のチェックをオフにしてテンプレートを保存し、再構築する。

3,ダイナミックパブリッシングをオンにする。
管理画面 → 設定 → 公開 → 【テンプレート別に、スタティックHTMLもしくはダイナミック・パブリッシングを選択します】をオンにして、ページ末尾の【変更を保存】ボタンをクリック。

4, .htaccess の編集
Blogの出力先のディレクトリにできた【.htaccess】というファイルをいったんダウンロードして、テキストエディタで開き、編集して、再アップロードする。(私の場合、MySQL でもダイナミックパブリッシングを使っていたので既にこの .htaccess ファイルはあったが、それにちゃんと上書きされていた)
【…../出力先ディレクトリ名/mtview.php】という4箇所を、【…../出力先ディレクトリ名/mt-dynamic.php】に置換する。mtview.php という箇所は4箇所以上あるので、その前に出力先ディレクトリ名/ がある箇所だけを変更すること。mtview.php の前に / スラッシュをつけて /mtview.php で検索し、/mt-dynamic.php で置換すると良い。

5, .phptemp ディレクトリの作成
ブログ出力先のディレクトリに、【phptemp】という名前のディレクトリを作り、そのパーミッションを【707】に変更しておく。

6,各テンプレートの設定
テンプレートの編集画面で、動的に出力したいテンプレートを開く。私の場合はアーカイブエントリー、カテゴリーエントリー、日付エントリーの3つで、各編集画面の右上にある【このテンプレートをダイナミック・ページにする】のチェックをオンにする。

7,ブログの再構築
全てを再構築する。各アーカイブを確認して表示されれば、無事完了。以前のスタティックHTMLのときのファイルは、拡張子に【.static】が追加された状態でサーバーに残っているが削除できる。この手順のうち、2から7までをそれぞれのブログで繰り返した。全てのブログがPerl版ダイナミックパブリッシングで表示されている。(Perl版プラグインが使える! 表示は遅いかも?)

さて、次はPerl版プラグインの導入。やっとページ分割に取り掛かれる。
それにコメントやエントリー編集画面でスマイリーも。(^^ゞ