MovableTypeのアップデート

どうという話ではないんですが、このblogのエンジンとなっているMovableTypeを3.2から3.3にアップデートしました。思ったよりも簡単で、データベースの威力を思い知った次第です。
数時間ほど、当サイトがアクセス不可になっておりました……その間、お越し下さった方がおられましたらすみません(^^;)。
以下、備忘録です(ので、MovableType使ってる人以外は見ても面白くないと思う…)。


Movable Typeのアップデート

サーバーはLinux (xrea.com)。
参考Webページは

こちら
のマニュアル。

  1. サイトのバックアップ(サイトごとローカルにコピー)
    マニュアルでは、「アプリケーション・ディレクトリ」「スタティック・ディレクトリ」「ブログ・ディレクトリ」「データベース・ディレクトリ」をバックアップせよ、と書いてあるが、xreaが提供するのインストールスクリプトが3.2インストール時に何をやったかよくわからないので、とりあえず全部バックアップ。かなり時間がかかるが、消えて泣くよりまし、ってことで(T▽T)
  2. データベースのバックアップ
    xreaの場合、管理ページにログインすると「データベース」という項目があるので、そのタブをクリックする。更に、「保存」ボタンをクリックし、バックアップを作成(サーバー内に作成される)
  3. 現在のサイトをFTPプログラムでリネーム
    http://moo-and-mole.com/waltz/から
    http://moo-and-mole.com/waltz-old/ など
  4. 3.3の新規インストール。
    以下のディレクトリをリモートに作成。パス名は以下の通り。$UIDは自分のログイン名。
    perlのパスはxreaでは/usr/bin/perlが入っているので、デフォルトのまま変更しなくてよし。
    [アプリケーション・ディレクトリ]
    /virtual/$UID/public_html/walts/mt
    (URL http://moo-and-mole.com/waltz/mt/)
    [スタティック・ディレクトリ]
    マニュアルの例題ではアプリ・ディレクトリとは別につくるような感じだったが、そうするとimgファイルを見つけられない様子だったのでmtの中に作成
    /virtual/$UID/public_html/walts/mt/mt-static
    (URL http://moo-and-mole.com/waltz/mt/mt-static/)
    [ブログ・ディレクトリ]
    /virtual/$UID/public_html/walts/
    (3.2の時の設定にあわせた。普通は~/blog/とかにするのかもしれないけど、waltzは全部blogで管理しているので)
    (URL http://moo-and-mole.com/waltz/)
    [データベース・ディレクトリ]
    多分xreaが勝手につくっているので、特に設定しない
    [テンプレートバックアップ用ディレクトリ]
    http://moo-and-mole.com/waltz/temp/
    これは特に必要はないが、テンプレートをバックアップするためのディレクトリ。バックアップの方法はこちら(商用ブログ専門店様)
  5. マニュアルに従って、アプリケーション・スタティックディレクトリをサーバーにアップロード
  6. 3.2でそれ以外に付け加えていたディレクトリをサーバーにアップロード
    ついでに、めちゃくちゃになっていたimgディレクトリも整理。
  7. プラグインをmt/pluginにアップロード(下記参照)
  8. アップロード窓用変更を加える(下記参照)
  9. ローカルにバックアップしておいたmt-config.cgiを変更し、アプリ・ディレクトリにアップロード
    CGIPathの確認:
    CGIPath http://moo-and-mole.com/waltz/mt/
    3.3用追記、以下の一行を最後に足す
    AltTemplate feed results_feed.tmpl
  10. パーミッションの変更(マニュアルを参照)
  11. CGIにアクセス
    アプリケーション・ディレクトリ以下のmt-cgiにアクセス
    すると、勝手にupdateを始めるので、インストラクションの通りにやる。

プラグインの追加

以下のプラグインは、小粋空間さまFujimotoさまの記事を参考にさせて頂きました。

  • Ajax月送りカレンダー
    Ajax月送りカレンダーは、index.phpのあるディレクトリにfileを置かなければならない。以下のファイルを間違って消さないよう注意。

    • prototype.js
    • ajaxCalendar.js
    • dayChecker.js

    インストラクションに従いインストールする。
    なお、本サイトはEUC-JPなので、追加プラグインが必要。
    mt/plugin/mt-i18n.pl
    を間違って消さないように。
    設置について問題が発生。うちはアーカイブパスを設定しているので、カレンダーテンプレート及びカレンダー表示部分に指定の変更を加えたが、これがまともに動かないことが判明。結局、<$MTBlogURL$>の戻り値を調べて、うちの設定ではjaxCalendar.jsスクリプトでアーカイブパスを加える以外の特別な処置は要らないとわかった。(多分、サイト・パスとアーカイブ・パスの設定が標準ではなかったと思われる。今となっては変更もできない…)
    カレンダー表示部分は、うちのサイトは表示の都合上遠い未来のエントリーがあったりするので、以下に変更した。

    <!– カレンダー表示開始 –>
    <
    div id="calendar">loading …</div>
    <
    script type="text/javascript">
    getCalendar("<$MTBlogURL$><$MTDate format="calendar/%Y/%m/" $>");
    <
    /script>
    <
    !– カレンダー表示終了 –>

  • 休日表示カレンダースクリプト(イギリス版)
    休日表示をイギリスのものに変えてしまうオプション。何故こんなものが、、、(笑)
    上記dayChecker.jsと差し替えて使う。
  • カテゴリー・アーカイブをページ分割
    必要なテンプレートはMTPaginate.pl。インストラクション通りでいいが、アーカイブ・マッピングの変更は行わなかった。
  • メールフォーム
    追加プラグイン:MailForm
    UTF8で書かれているので注意。アップロード前にmiなどを使ってコードをEUC-JPにしておく。

「ファイルのアップロード」ウィンドウに表れるインストラクションを変更する

MovableTypeには「ファイルのアップロード」という便利な機能があるのですが、ここでいつも何処にファイルをアップロードすべきか迷います。一応サイト内にimgとかpdfとかそれ専用のディレクトリを作っているんだけど、その下の階層をいつも忘れて、わざわざFetchで確認、という羽目になり、結局Fetchで送った方が早い、ということに(TT)
でも、「ファイルのアップロード」機能を使えば、勝手にエントリーにリンクしてくれたり埋め込んでくれたりするので、とても便利。本当は、MovableTypeが保存先をブラウズさせてくれれば一番いいが、それは当分叶いそうにないので、「ファイルのアップロード」ウィンドウに表れる説明書きの中に直接Path一覧を埋め込んでしまえ!という変更です。
以下、MacOSXユーザーの場合の変更です。

  1. ミミカキエディット(mi)をダウンロードしてインストールする。
    これは、とんでもなく強力なエディタです。これがあれば、エディタはあとvi以外何もいらん、というくらい凄いです!しかもフリーウェア!!!(でもあまりに凄いので思わず寄付してしまった(笑))
    CGIやperl、phpなどをいじる人は持ってて損はありません。文字コードの変換はもちろん、指定ディレクトリ以下のファイルに含まれる文字列検索もやってくれて、今回の用途には最適です。
  2. アプリケーション・ディレクトリ(mt.cgiがあるディレクトリ)/lib/MT/L10N/ja.pmを適当にja.pm.origなどにコピーする。
    コピーするのは、あとで予期せぬ事が起こっていないか確認するため。
  3. ja.pmをmiで開く。ツールバーのすぐ上に、現在開かれている書類名と、その隣に「(書類 – Perl)」と書かれていることを確認。もしPerl以外だったら、そのモードを覚えておく。そのまま保存せずに書類を閉じる
  4. 文字コードの設定。
    miのメニューバーから「mi」→「モードの設定」→「Perl」を選ぶ。もしモードがPerlでなければ、該当するものを選ぶ。「文字コード」を選び、「Unicode保存…」と「新JISの文字を表示…」にチェックを入れ、「適用」を押す。これをやらないと、バックスラッシュが円記号に変換されて保存されてしまい、cgiが動かなくなる。
    後の確認のため、「ツールバー」に必要な道具を足しておく。「ツールバー」を選ぶと、現在見えているツール一覧が表示されるので、「新規ツール」→「組み込みツールボタン」から「文字コード」「改行コード」「モード」の3つをツールバーに追加。
  5. ja.pmの編集
    ja.pmをmiで開き、メニューバーから「検索」→「検索・置換」を選ぶ。検索文字列に
    _USAGE_UPLOAD
    と入力し、「巡回」にチェックを入れて、「次を検索」ボタンを押す。すると、見覚えのある文字列があるはず。

    ‘_USAGE_UPLOAD’ => ‘サーバーのサイト・パス、もしくはアーカイブ・パスに指定されたディレクトリに、ファイルをアップロードできます。下のフォームに書き足せば、それぞれのディレクトリの下に置くこともできます (例えば images ) 。もし、そのディレクトリがなかったら、自動的に作られます。’

    この文章をカスタマイズする(’ ‘の間に納めるように)。例えば、imgファイルは(アーカイブ・パス)/img/yyyy/mm/ddに置く、等。余計な改行やタブを入れたらどうなるかは未確認だが、多分あまりよくないと思われる。
    そのまま、保存。サーバー上の該当するディレクトリにアップロードする。
    (miは基本的に、開いた文字コード/改行コードで保存してくれますが、もし変な事が起こったら、文字コード=「Unicode(UTF-8)」、改行コード=「LF(UNIX)」、モード=手順3で確認したモードになっているか確認して下さい。それ以外では動きません(多分)。)

  6. 変更したja.pmをサーバーにアップロードする
    特にアクセス権の変更とかは無し。

以上で、カスタマイズされた状態になるはず。参考までに、私のja.pmはこちらです。
もし、この変更でcgiが動かなくなってしまったら、unixコマンドのdiffなどでコピーしておいたja.pm.origと比べてみると、原因が多分わかると思います。カスタマイズした行以外の変更が見えたら、上の手順の何かが間違っている、ということで。(バックスラッシュが円記号になってたりとか。。)やり方は以下の通り。

  1. 比べる二つのファイル(ja.pm, ja.pm.origとする)をDesktopに置く。
  2. 「アプリケーション」フォルダの中に「ユーティリティ」フォルダがあるので、その中の「ターミナル.app」をダブルクリックで開く。ターミナルが開くはずだが、開かなかったらメニューバーの「ファイル」→「新規シェル」で開く。
  3. メニューバーから「ターミナル」→「ウィンドウ設定」を開く。「ターミナルインスペクタ」が開く。
  4. 一番上のリストメニューで「ディスプレイ」を選択し、「文字セットエンコーディング」を「Unicode(UTF-8)」に設定。「日本語や中国語にワイドグリフを使用」にチェック。
  5. 開いているターミナルで、以下の文字列を打つ。ただし、(リターン)は改行キーを押す、の意味。

    cd(リターン)
    cd Desktop (リターン)
    diff ja.pm.orig ja.pm (リターン)

    見易くするため、スペースを全角で記入しているが、入力時はスペースも含め全て半角で。

これで差分が見えます。行の先頭に>がついているものがdiffコマンドの1番目の引数(この場合ja.pm.orig)、<がついていたら2番目の引数のファイルからの情報です。
まあ、かなり強引な変更ですが、予期しないところにgifやjpegをバラまいちゃって困っている人には使えるんじゃないでしょうか(^^;)。