« PC物色メモ | Home | 無頼という悦楽 »

Nov 112013

Movable type 3.35から5.161へバージョンアップ

7年ぐらい前からver.3.35のままだった本ブログのシステムを、やっとこアップグレードしました。
途中ver.4を経由してアップグレードを試み失敗したりと右往左往しましたが、なんとか無事アップグレードできたのではないかと・・・(ただテンプレートがそのままってのはちょっと意外でしたけど・・・テンプレートってDBに入っているのかしら?)

いや、まだ詳しく確認してないので、なにか途方も無いバグを内包しているのかもしれません。
余力があったら詳細書きます

需要があるのかわからないですが、設定過程をメモ。

DBのバックアップ

まず、元々のDBがMySQL4だったのでMySQL5にDBをアップグレード。念のため複製。
利用しているサーバはheteml。PhpMyAdminでExport。設定は以下のとおり。(他のパターンではNGの場合もあった)
2013-11-11_163354.png

SQLデータの修正

DB以降で悪戦苦闘。普通にphpMyAdminでインポートすると以下の様なエラー。

CREATE TABLE IF NOT EXISTS `mt_author` ( `author_id` int(11) NOT NULL auto_increment, `author_api_password` varchar(60) default NULL, `author_can_create_blog` tinyint(4) default NULL, `author_can_view_log` tinyint(4) default NULL, `author_email` varchar(75) default NULL, `author_hint` varchar(75) default NULL, `author_is_superuser` tinyint(4) default NULL, `author_name` varchar(50) NOT NULL default '', `author_nickname` varchar(50) default NULL, `author_password` varchar(60) NOT NULL default '', `author_preferred_language` varchar(50) default NULL, `author_public_key` mediumtext, `author_remote_auth_token` varchar(50) default NULL, `author_remote_auth_username` varchar(50) default NULL, `author_type` smallint(6) NOT NULL default '0', `author_url` varchar(255) default NULL, `author_created_on` datetime default NULL, `author_created_by` int(11) default NULL, `author_modified_on` timestamp NOT NULL, `author_modified_by` int(11) default NULL, [...] MySQLのメッセージ: ドキュメント #1426 - Too big precision 14 specified for column 'author_modified_on'. Maximum is 6.

ogawa/mt-DBConverterなど色々試してみたものの、エラー。
どうもMySQL4>MySQL5のバージョンアップに伴い、いくつかSQLに変更が発生しているらしいので、その辺を修正。

  • "ENGINE=MyISAM"を"ENGINE=MyISAM"に変換
  • "timestamp NOT NULL"を"timestamp NOT NULL"に変換(Valueの方はそのままでOK)

これで以下の設定でインポート可能(サイトによっては互換モードを4にすると説明されているサイトもありますが、私はNONEで行けた)
2013-11-11_163829.png

Ver.4へのアップグレード断念

最初に3>4へと1つずつバージョンアップしようとしたのですが、公式からのVer.4配布は終了していたため、Movable TypeのGithubからVer.4をDLしましたが、以下の様なメッセージがでて断念。

Got an error: Can't locate MT.pm in @INC (@INC contains: /home/sites/heteml/[user directory path]/web/mt/extlib lib /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.7 /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.7/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/vendor_perl/5.8.8 /usr/lib/perl5/vendor_perl/5.8.7 /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.8/i386-linux-thread-multi /usr/lib/perl5/5.8.8 .)

このへんはGitHubからDLした関係上、ライブラリ系がごそっと抜けているのかもしれない。
いちいち調べるのも面倒になったので、公式サイトからVer5をDLすることに・・・

Ver.5のアップグレード

MTのアップロード先ディレクトリは既存と別に新規作成。そこにMT5を一式アップロード
参考

mt-config.cgiってのがVer.5から手作業で作成しなくなったようで、mt-check.cgiで環境をチェックしてからmt.cgiにアクセス。
対話形式で設定が進行。
どこでアップグレードと認識されたのかよくわからないけれど、接続DBを先ほどバージョンアップしたDBに設定して、もろもろ粛々と設定。
テンプレートなども勝手にVer.3のものが継承されてつつがなく終了。

本当はテンプレートなども一から一式作り直したかったのだけど、継承されたので、なんとなくテンション下がって、少し調整して終了(汗

ビルドなどもMT3に比べて若干早くなった気がする。
振り返ってみると問題はSQLのバージョンアップで、MTのバージョンアップはまっとうにやっていれば引っかかることも無かったかもしれない。

3 Comments

初期化の時のCGIPath、StaticWebPath設定をドキュメントルートで記述したため、サブドメインを割り当てている本ブログでAction先がサブドメイン参照になってしまって、エラーが発生。
mt-config.cgiをDLしてそれぞれを絶対パスで記述して対応

いやー、バージョンアップしたところ、Spamがすごい勢いで表出するようになりまして、これはMT3のスパム学習が飛んでしまったからかしら?と思いつつ、1000件/日とか処理できないので、とりあえずCAPTCHAを導入してみました。
んで、その結果以前のテンプレートはやはり使えずということで暫定的にデフォルトのテーマで展開することにしました。
しかしデフォルトダサいですね・・・。
WPの方はもう少しまっとうな印象ですが・・・

既存ページのURLを継承するためにWordPressではなく、MovableTypeを選択したというのに、エントリーアーカイブのネーミングルールが継承されていないという落とし穴・・・汗

これまでEntryIDベースで生成してきたが、そもそもEntryIDがDB移設で継承されるのか??

Leave a comment

Search and Archives