増子良太のブログです

増子良太が書いているブログです。テーマをしぼらず、思いついたものをただひたすら書いていきます。

MTでアップグレードが終わらない時にはコマンドから実行しよう

      2017/09/30

MovableType(MT)のアップグレード

毎回毎回お久しぶりの記事になってしまいます。。。

さて、今回はある案件でMTのバージョンを上げる、つまりはアップグレードするという案件がありました。

通常MTのバージョンアップは簡単です。

  1. 最新バージョンのファイルをFTPやSFTPでサーバーにアップロードする
  2. 管理画面にアクセスするとアップグレードを促される
  3. ログインしてアップグレードが始まる
  4. 終わったらアップグレード後のMTが使える

このアップグレードはデータが少ない環境であれば、ほんの数秒で終わります。

ただし、データ量、環境によってはアップグレードにものすごく時間がかかります。

MTのアップグレードはあまりに時間が長くかかってしまうと、たいていのサーバーでタイムアウトの処理が走り、アップグレード自体の処理も途中で止まってしまいます。

サーバー自体の設定をいじっても、何時間もかかってしまうような処理だと今度はデータベースでトラブルが起きたりと、トラブルのオンパレードに見舞われてしまいました。

もうあんな思いはしたくない!!

MTアップグレードはコマンド実行で簡単に

ある方のアドバイスにより、便利なコマンドツールがあるよ!ということで試してみました。

なんと、アップグレードをウェブから画面で行うのではなく、コマンドを実行するだけで完了するという便利なツールです。

使い方は簡単!mtがインストールされているディレクトリのtools/upgradeを起動するだけ

そのままでは実行できないので必要なオプションを指定します。

  • –name アップグレードを実行するユーザを指定します
  • –sql アップグレードを実行した時にデータベースに投げられるSQLを表示させる(このオプションを指定するとdryrunも指定したことになるので、アップグレード処理は実行されません)
  • –dryrun アップグレード処理は実行せず、実行した際のログだけ表示する

ここでMTをプラグインなどでカスタマイズしている人は、外部モジュールなどを使っている場合、モジュールにパスが通っておらず、エラーになってしまう場合があります。

upgradeシェルは中身を見てもらうとわかるのですが、perlでできています。(コマンド打つ時もperlって打ってるしね)

なので、実行時にモジュールを指定してあげることで解決できます。

このコマンドを実行して後は待つだけ。

ブラウザとにらめっこしながら、タイムアウトになったらどうしようなんて心配もいらない。

幸せなアップグレード、幸せなMovableTypeライフを!

 - movabletype(mt), Perl