Movable Type 7にアップグレードしました

  • 投稿日:
  • by
  • カテゴリ:
これまでVMWareで走らせているWindows Server 2008R2上にMT6の環境を作って動かしてきましたが、OSが古くなってきたので、Windows Server 2016のIISとMovable Type 7を組み合わせた環境に切り替えました。
構築自体はそれほど難しくなく、DBの中身を移動させるところで少々ハマったのでメモを残しておきます。
環境はWindows Server 2016と標準のIIS、Movable Type 7個人無償ライセンス。
  • MySQLは今日の時点での最新 8.0
  • PerlはStrawberryPerlの最新版 5.28
  • PHPは7.2.11
  • phpmyadminは4.8.3
  • ImageMagickはImageMagick-6.9.10-14-Q16-x64-dll
という組み合わせ。
ImageMagickだけは古いのを選んだ。 各パッケージはCドライブなりに解凍してPATHを通すか、インストーラーに従って標準のディレクトリにインストールするだけ。

移行する手順としては、
  1. とりあえず新規にMT7をインストールする。
  2. PHPとphpMyAdminをインストールして使えるようにする。
  3. phpMyAdminで旧サーバーのDBをエクスポートする。
  4. エクスポートしたファイルをエディターで開いて、今後https化するために、httpのURLで書かれているものを相対パスに直す。
  5. 書き換えたエクスポートデータを新サーバーにインポートする。
  6. 写真のようなスタティックなアセットをコピーする。
  7. DBをアップグレードして、権限などの問題がなければ全リビルドして終了。
のようなものをイメージして作業にとりかかった。
MT7のインストールは特にハマることもなく、mt-check.cgiではImage::Magickで一度引っかかっただけで、このモジュールはStrawberry PerlのCPANでインストールできたから問題なし。
https://www.imagemagick.org/script/download.php
でDLL版をダウンロードして、インストール時にライブラリとヘッダーをインストールするようにオプションを変更。
CPAN Clientで以下のコマンドを実行。
  • notest install Image::Magick
StrawberryPerlのDBD::MySQLは以下の手順。
最後にエラーが出たけど無視。実際動いてるし。
> look DBD::mysql
> perl Makefile.PL --mysql_config=c:\strawberry\c\bin\mysql_config.bat
> gmake
> gmake install
> q

PHPのCGIの設定は、WS2016のIISではハンドラマッピングのモジュールマップの追加で行う必要がある。

php.jpg

続いて、phpMyAdminでインポートする際、エクスポートしたファイルは大概2MB以上あると思うので、インポート時にサイズが原因でエラーにならないように設定を変更する。
まず、phpをインストールしたディレクトリにあるphp.iniをテキストエディタで開いて、以下の3つの行を書き換える。エクスポート前にMTのツールでログを全部削除しておけば、エクスポートされたファイルのサイズはかなり抑えられるし、基本的に不要なので、mt_logはエクスポートしないというのも手。
  • pload_max_filesize=80M
  • post_max_size=80M
  • memory_limit = 384M
また、既定の設定でIISをインストールすると、セキュリティ機能でアップロードできるファイルサイズがチェックされるようになるので、phpmyadminのアプリケーションのみ、インポート可能なサイズの上限を引き上げておく。
コマンドプロンプトで以下のコマンドを実行するんだけど、MTをインストールするサイトをMT Siteという名前にして、その下にphpmyadminというアプリケーションを作っている場合。自分のサイトとアプリケーションの名前に置き換えて実行。以下の例では100MB近くまでアップロードできるようにしているが、アップロードし終わったら上限を下げたほうがセキュア。

%windir%\system32\inetsrv\appcmd set config "MT Site/phpmyadmin" -section:requestFiltering -requestLimits.maxAllowedContentLength:100000000

あとはphpMyAdminでMTのDBを選択して、編集後のファイルをインポートするだけ。
自分の環境では50MBくらいのファイルをインポートすることになった(文字コードがUTF8だからファイルサイズが純粋に大きい)。
インポートが成功したら、ひとまずDBをアップグレードするだけの状態になったはず。(以前、アクセスカウンターのプラグインを入れていて、テーブルに既定では存在しないカラムが追加されていたことが理由でインポート時にエラーになっていた。カラムを追加すれば済むけど、そもそも、DBを作成してからmt.cgiを実行しないでphpMyAdminでインポートすれば、エクスポートしたテーブルの情報で新しくテーブルから作成されるはずなので、それならエラーは発生しないはず)

mt.cgiを実行すると、mt_configに書かれているバージョン番号がMT7よりも古ければDBをアップグレードする処理が走って、MT7で追加されたり変更された内容がDBに反映される。
ブログ全体を再構築して(まる1時間かかった)、投稿などの機能が問題なく動くことを確認する。

ここで引っかかったのが、投稿時にトラックバックのエラーが出る事象。新規インストールでまっさらな状態では発生しなかったので、アップグレードすると起きるものらしいけど、おそらくすべての人で起きるわけではないだろうから、過去に使っていたプラグインの影響があるかも。
対処方法は、MT7をインストールしているディレクトリのpluginsディレクトリ配下に
TrackbackBugsWorkaroundSample
というディレクトリを作成し、
https://gist.github.com/miniuchi/6926418b5a9649eea0daff9424017a00
にある中身をコピーして、config.yamlとして保存すると解消する。(プラグインとしてこの名前のプラグインが有効になっていることをあらかじめ確認)

あと、自分がハマったのはエディターのTinyMCEが表示されなかったこと。エディターに関係ありそうなプラグインを片っ端から無効化してエディターは表示されるようになったけど、画像をアップロードする際に自動的に名前を付けてくれる機能などがなくなっていたので、これはImageUploadUtilityというプラグインをインストールして対処した。
エディターはextended TinyMCEが公開されているので、それを利用するのも手だろうけど、作者の方が書かれているように、標準エディターを使わないというのはMT7のコンセプトとはちょっと違うのかもね。

で、結局のところ、アップグレードしてしまうと、過去に使っていたスタイルをそのまま引き継いでしまうので、MT6だろうと7だろうと見た目が同じ。一度どこかで見た目を全リセットしたいところだ。