株式会社アスタスタ
WEB技術

Movable Typeのサーバ移転とアップグレード

シニアWebエンジニア M.H.

2026.6.9

少し古い環境のサーバから、新サーバにMovable Typeを移行とアップグレード(バージョンアップ)することがあったので、その記録です。

同レンタルサーバの別プラン(新プラン)への移行です。

抜け漏れがありそうなのでMovable Typeのエクスポート・インポートツールは使わず、ファイル一式とデータベースを丸ごと移行することにしました。

Movable Typeと書くと長いので一部MTと記載している箇所があります。

環境

移行元

  • Movable Type:7.9.9

  • MySQL:5.6

移行先

  • Movable Type:9.0.4 ※作業時点の最新

  • MySQL:8.0

データとデータベースの移行

まずはMTのバージョンそのままで、サーバの移転作業だけをします。

移行元での作業

ファイルのダウンロード

移行元のサーバのファイル一式をダウンロードしておきます。今回はFTPで地道にダウンロードしました。SSHでサーバに入れるならSSHで入ってアーカイブ(tar.gz)にして落としてくるのが速いです。

データベースのエクスポート

サーバ用意しているphpMyAdminでエクスポートしました。こちらもSSHでサーバに入れるならmysqldumpコマンドでエクスポートしてもよいです。レンタルサーバがバックアップを作成・取得できるツールを用意している場合は、それを利用した方が速く確実な場合もあります。

移行先での作業

事前に移行先のサイト領域・データベースを作成しておきます。

ファイルのアップロード

移行元のファイル一式をアーカイブして、FTPでファイルをアップ、SSHで接続して展開して、所定のフォルダに移動、という方法を取りました。こんなことせずにscpで転送した方がよかったかもしれません。

mt-config.cgi を移行先のサーバに合わせて変更しておきます。

データベースのインポート

エクスポート作業同様、サーバが用意しているphpMyAdminでインポートしました。

移行元データベース(MySQL 5.6)

テーブルの文字セットは下記です。(データベースは記載忘れ)

  • 文字セット:utf8

  • 照合順序:utf8_general_ci

移行先のデータベース(MySQL 8)

データベースの文字セットはutf8mb4、エクスポートしたデータベースをインポートすると、テーブルの文字セット・照合順序が下記になります。

  • 文字セット:utf8mb3

  • 照合順序:utf8mb3_general_ci

今後のために、utf8mb3 → utf8mb4にしておきます。utf8mb3は絵文字などが使えない、後々使えなくなる可能性があるためです。

MySQL :: MySQL 8.0 リファレンスマニュアル :: 10.9.2 utf8mb3 文字セット (3 バイトの UTF-8 Unicode エンコーディング)

データベースの文字コード変換

MTに同梱されている変換ツールを使用します。

データベースを utf8mb4 に変換する | CMSプラットフォーム Movable Type ドキュメントサイト

SSHでサーバに入って、ツールの置いてある場所まで移動(html/mt 以下にMT一式が置いてあるとする)

cd /html/mt/tools/

perlコマンドで実行

perl ./utf8mb4_converter --host=DBホスト名 --user=DBユーザ名 --pass=DBパスワード --db=DB名 --force

—verboseオプションを付けないとエラーでない限り何のメッセージも表示せずに完了します

コマンドの実行したら何かしらメッセージが出る場合(—verboseオプションなしで)

既にutf8mb4になっているメッセージが出る

 already utf8mb4

データベースがutf8mb4になっているためです。テーブルはutf8mb4にはなっていないので、—forceオプションを付けて再度実行します。

perl ./utf8mb4_converter --host=DBホスト名 --user=DBユーザ名 --pass=DBパスワード --db=DB名 --force

SQLの構文エラーメッセージが出る

DBD::mysql::db do failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-dev_db-2 CHARSET utf8mb4 COLLATE utf8mb4_general_ci' at line 1 [for Statement "ALTER DATABASE username-dev_db-1 CHARSET utf8mb4 COLLATE utf8mb4_general_ci"] at utf8mb4_converter line 62.

データベース名にハイフンなどの記号が入っているデータベース名(例:username-dev_db-1)を指定しているので、構文エラーとなっています。

エラーメッセージに書かれているように62行目あたりに書かれているデータベース名の指定を変更します。

$dbh->do("ALTER DATABASE $db CHARSET utf8mb4 COLLATE $collate");

$dbをバッククォート ` で囲んで、再度実行します。

$dbh->do("ALTER DATABASE `$db` CHARSET utf8mb4 COLLATE $collate");

phpMyAdminなどで、テーブルの文字セット・照合順序が変わっているか確認しておきます。

MTのアップグレード(バージョンアップ)

前述の作業が一通り済んだら一旦、現バージョンのMTにログインして、管理画面の操作、全サイトの再構築をして問題なく移行ができているか確認しておきます。

問題なさそうなら、MTのアップグレード(バージョンアップ)作業をします。

MTの新バージョンをユーザサイトにログインして、ダウンロードページから落としてきます。(ユーザサイトはライセンス登録時のメールに記載されています。新バージョン案内メールにも記載されています。)

基本的には公式サイトの指示に従って対応します。

旧バージョンから Movable Type 9 へアップグレードする | CMSプラットフォーム Movable Type ドキュメントサイト

MTの本体ファイルに含まれていない、独自で追加したファイル、MTが出力したファイルを事前にコピーしておきます。

アップグレード時に、新しいディレクトリにコピーするファイル | CMSプラットフォーム Movable Type ドキュメントサイト

この作業を忘れると、不完全な状態でアップグレードされることがあるので注意します。

追加したプラグインを配置忘れた状態でアップグレードをかけたら、プラグインと関連するデータが消えた、という経験をしたことがあります。(この時はデータベースを元に戻して最初からやり直しました)

下記、手順をまとめました。

アップグレード手順

下記の構成とします(/html/がドキュメントルート)

/html/mt → MT本体一式
/html/mt-static → mt-staticは別フォルダに配置

新MTのファイル一式をmt_newなど、別フォルダ名で配置

/html/mt_new
/html/mt-static_new

現MTに含まれるコピーが必要なフォルダ・ファイルを配置

/html/mt_new/mt-config.cgi
/html/mt_new/plugins/追加したplugin
/html/mt_new/themes/追加したテーマ
/html/mt-static_new/追加したplugin
/html/mt-static_new/support

現MTフォルダをmt_oldなどにリネーム

/html/mt → /html/mt_old
/html/mt → /html/mt-static_old

新MTフォルダをリネーム

/html/mt_new → /html/mt
/html/mt_new → /html/mt-static

後はMTのログイン画面に入って、画面の指示に従えばアップグレードできます。

今回は、7.9.9 → 9.0.4 と2バージョン上げましたが、問題無くアップグレードできました。

この記録がMTのサーバ移転作業をされる方の参考になれば幸いです。

share

関連する記事

この人が書いた記事