Movable Typeのアップデートでやった事(MT4->MT7)

04/01/2021

Movable Typeアップデートの相談があったので
やってみたのですが思いの他結構面倒だったので
忘れないように復習がてら書いてみます。

自己流の部分結構あるので
公式とかに聞くのが一番かと思いますが、

MT4(sqlite2)->MT7のアップデート

の話です。作業はmacです。

サーバー上のデータをローカル環境に

レンタルサーバーのアップデートでperlが動かなくなったみたいなので
とりあえずリモートの公開データとかMTのデータを一式を一旦ローカルにもってきます。
今回相談受けた案件のリモートはディレクトリまるっとcgi使えるサーバーで

/公開ディレクトリ/mt/

って感じだったのだけど

ローカルはmampでやったので
MT自体のデータはmampの

Applications/MAMP/cgi-bin/mt/

ってな感じでいれました。
(途中dockerでやってみようかなとも思ったのだけども面倒くさくなってあきらめました。)

あと/cgi-bin/の方は
パーミッションも変更、ローカルなので適当に

find . -type d -exec chmod 755 {} +
find . -type f -exec chmod 750 {} +

こんな感じに

perlの準備

perlあんまり触る機会が無いのもあると思うけど
準備とかが必要な場合はここも面倒

とりあえず旧環境のMT4が動かないと何がなんやら、 な感じだったので

perlbrew

perlbrew入れる。
でperlbrewでバージョン落としたperlをインストール&切り替える
今回僕の場合はMT4なので5.8~とかにしました。

perlbrew switch perl-5.8.9

MT7用にも入れたり切り替えたりで色々入れる。

perlbrew list

shebang

上記のperlbrewの切り替えでいけるかと思ったけども

#!/usr/bin/env perl

とかだとmamp利用だからかも?ですが
macデフォのperl参照してしまい、ダメでした。

よく分からない&面倒だったので直パスに変更。

#!/Users/user/perl5/perlbrew/perls/perl-5.8.9/bin/perl -w

でとりあえずローカルでMT4にアクセスはできるようになりました。

モジュール類

ブラウザからインストールする上でモジュール関連が無いとか
色々エラーが出まくるので諸々入れます。

cpanm

モジュールインストールするにあたり
cpanmってやつ入れる。

perlbrew install-cpanm

多分依存関係とかやってくれるnpmとかcomposer的な物?だと思う。
でブラウザでエラーでたの全部入れちゃう。

cpanm DBI.pm
cpanm DBD::mysql
cpanm HTML::Entities
cpanm --force DBD::SQLite
cpanm --force DBD::SQLite2

とかだったと思う

DBD::SQLiteとかはMT4側ですでにmysql設定になっている場合はいらないと思います。

DBD::mysql

DBD::mysqlだけ
cpanm DBD::mysqlだけだと入らなかったので

cpanm DBD::mysql --configure-args="--libs='-L/usr/local/opt/openssl/lib -lssl -lcrypto -L/usr/local/lib -lmysqlclient'"

ってやればインストールできました。

big sur

big surにしたら色々動かなくなった。

基本的にはprelbrewで一回バージョン毎にアンインストール・もっかいインストールって手順で動いたんだけどもdbd::mysqlだけ上記でも入らなくなった。

なんとなくopensslのバージョン?とかが問題だったような気はしてる。試した事としては

一回opensslアンインストール

brew uninstall openssl

logとかに1.0.0が無い的なエラーがでてたので
brewでインストール。

しようと思ったら公式?では公開されなくなったみたいなので下記からインストール

brew install rbenv/tap/openssl@1.0

一応もっかい普通にinstallもした。

brew install openssl
PATH="$(brew --prefix mysql-client)/bin:$PATH"
export LIBRARY_PATH=$(brew --prefix openssl)/lib:$LIBRARY_PATH

パスの設定とかもあるのかも、
関係ないかもだけど。

どれやったから解消出来たのか不明

MT側

mt-config.cgiで設定等

mt-config.cgiをリネームとか削除してからブラウザでmt.cgiにアクセスすると
インストール画面になるので色々設定する。もしくはmt-config.cgiに
CGIPathとかStaticWebPathとかの設定直接書いてもよいと思います。

ログイン

上記まで多分MT4(sqlite2)のリモートの旧環境の再現が
できるのでログインできるハズ。
後は移行する。

サイトデータのエクスポート

システムメニューからエクスポート(sqlite版)する。

DB設定をmysqlに

mt-config.cgiでsqlite->mysqlに変更します。

ObjectDriver DBI::mysql
Database mt
DBUser root
DBPassword root
DBHost localhost

DBSocket /Applications/MAMP/tmp/mysql/mysql.sock
#(mamp の mysql に向かないので追加)

こんな感じ
今回ローカルはmampなので
DBSocketも設定必要でした。

その後さっきsqlite版からエクスポートした
データをインポートしてmysqlにデータ変換。

アップデート

あとは最新のMTにアップデートします。
僕の作業時はMT7でしたがこの辺は公式見た方が早いと思われる

https://www.movabletype.jp/documentation/mt7/installation/upgrade/upgrade/

あとはmtタグとかプラグインで色々調整必要な
箇所ありそうなのですがとりあえずここまで