root 権限を取れるVPSサーバーでは色々な事が出来る。本当に面白いサーバーである。しかし、摩訶不思議な現象も多いので、危険性も高い。それでも面白さに目覚めれば、触らずにはいられない。とりあえず、入っている Perl モジュールと Image::Magick を最新にする作業を始めた。ところが最初からつまずいた。
まず、これはラピッドサイトのVPS(RV-7 シリーズ)ユーザーだけに限られるかもしれないが、入っている Image::Magick のバージョンが 6.0.7 と古い。そこで、お決まりの手順で Image::Magick 最新版をインストールすると、Movable Type が Image::Magick を認識しなくなった。これにはハマった。困り果てた挙句、もうダメでサーバー初期化しか無いかと思ったが、ラピッドサイトVPSの Image::Magick は、ディレクトリ /usr/lib にインストールされている事に気が付いた。Image::Magick はデフォルトで、/usr/local/lib にインストールしようとする。これで競合が起きていたわけだ。
そこでまず、/usr/lib の Image::Magick 6.0.7 を "rm -r -f ディレクトリ名" で削除する(削除が恐ければリネーム)。そして、Image::Magick インストールの ./configure にオプションを付ける。つまり、
"./configure --prefix=/usr" として Makefile を作成し("/lib" や "/bin" は勝手に付く)、後は、"make"、"make install"。
なお、./configure でメモリー不足のエラーになる時は、Mailman 等の使っていないアプリケーションを停止させて、メモリーを確保する必要が有る。
これでめでたく Image::Magick が最新版になった。最新版 6.4.0 にはバージョン 6.0.7 に無い機能が入っており、これは、プラグイン Better File Uploader で活きてくる。具体的には、GIF と PNG で「透かし」機能が使える。ラピッドサイトのVPSユーザーの方は、どうぞお試しあれ。余談だが、Movable Type 4.1 を使うのに、プラグイン BetterFileUploader(有料)、InsertLink、SortCatFld の三つは必須ですね。なお、さらに強力な編集投稿を行いたい方には FCKeditor という WYSIWYG エディタも有る。
その他、Movable Type は、独自に extlib というディレクトリに古いバージョンの Perl モジュールが沢山入っている。バージョンが古いのは問題だが、これは root 権限を取れない共用サーバーで動かすための親切だろう。Perl モジュールの最新版をインストールしても、mt-check.cgi でバージョンが上がらないのはこのためである。しかし、root 権限を取れるのであれば、リネームして最新版モジュールを正規のディレクトリにインストールできる。この方がサーバーへの負荷も少なく安全。例えば CGI::Cookie、File::Temp、Image::Size、LWP::UserAgent など(CGI、JSON はextlib に有るものでないと不具合が起こる。また、SOAP::Lite は事実上 CPAN から消えた。現在有る最新バージョンをインストールすると、mt-check.cgi が認識しなくなる。どうしても新しいバージョンをインストールしたい方は、FTP Search 等で "SOAP-Lite-0.71.tar.gz" を検索してください)。このように extlib に有るモジュールでないと不具合が起こる場合も有るので、mt-check.cgi で出てくる CGI を除いたモジュールと、extlib ディレクトリのトップに有る CGI と JSON を除いたモジュールだけにしておくのが無難だろう。全部アップデートしようとすると、300近いモジュールをインストールしなければならず、生産的ではない。それから、extlib ディレクトリに無い DBI、DBD::mysql モジュールなどは最新版にした方が良い。
なお、繰り返すが、これらの操作はサーバーの根幹にかかわる操作なので危険が伴う。長くなるので書かなかったが、Perl モジュールのインストールで不思議な現象にたくさん出くわした。UNIXシェル操作に慣れていない方は止めた方がいい。それでもやるならもちろん自己責任でね。
Perl モジュールのインストールには CPAN シェルを使うのがラクチン。CPAN サイトから勝手に最新バージョンのモジュールはもちろん付随するモジュールまで取ってきてインストールしてくれる。まず CPAN シェルを最新版にしておこう。これは単に、とりあえず入っている CPAN シェルから "install Bundle::CPAN" と入力して Enter キーを押すだけ(Bundle::CPAN は、CPAN 本体を含む多数のモジュールのセットで、頻繁にアップデートされているので、僕は CPAN シェルを起動したら真っ先に "install Bundle::CPAN" を実行するのが習慣になっている)。CPAN シェルの設定は、ほぼデフォルトでOKだが、ダウンロード元はもちろん日本に、それから "make install" に "UNINST=1" パラメータを、"./Build install" に "--uninst 1" パラメータを付けておくと良い。既に設定が有って再設定したい時は、/usr/lib/perl5/5.x.x/CPAN に有る(場所はサーバーによって違う)Config.pm をリネームして CPAN シェルを起動する。
使う上では、"install モジュール名" コマンドが基本だが(アップデートをチェックして必要なモジュールだけをインストールする)、DBD::mysql モジュールのように、mysql にパスワードを設定しているとインストールできない(テストでエラーになる)等、"install" コマンドが通用しないモジュールは、"force install モジュール名" コマンドという強制非常手段も有る(あくまで非常手段ね。乱用しない事。サーバーがダウンしても知りませんよ。経験による)。僕は、SSH2接続ソフトに TeraTerm を使い、マクロで Bundle::CPAN と Movable Type 各モジュールを自動アップデートするようにしている。
CPAN シェルの起動は、ルート権限を取って、"perl -MCPAN -e shell" が「お決まり」だったが、Perl のバージョン("perl -v" で確認できる)が 5.8.1 以降の場合は、単に "cpan" で起動するようだ。噂によると、ルート権限が無くても CPAN シェルを利用できるらしい。詳しくは自分で検索してください(例えばここ)。とにかく頭が良くて便利だから。
とまあ、今日はラピッドサイトのVPSと、Movable Type に振り回された一日だった。
設定完了した環境の mt-check.cgi 出力である(環境オタクの本性が出てしまった...)。
確認中: 必須モジュール
CGI::Cookie
サーバーに CGI::Cookie がインストールされています(バージョン 1.29)。
File::Spec (version >= 0.8)
サーバーに File::Spec がインストールされています(バージョン 3.2701)。
Image::Size
サーバーに Image::Size がインストールされています(バージョン 3.100001)。
CGI
サーバーに CGI がインストールされています(バージョン 2.80)。
確認中: データストレージモジュール
これらのモジュールは、Movable Type がデータを保存するために必要なモジュールです。DBIと、1つ以上のデータベース用のモジュールがインストールされている必要があります。
DBI (version >= 1.21)
サーバーに DBI がインストールされています(バージョン 1.605)。
DBD::mysql
サーバーに DBD::mysql がインストールされています(バージョン 4.007)。
DBD::SQLite
サーバーに DBD::SQLite がインストールされています(バージョン 1.14)。
DBD::Pg (version >= 1.32)
サーバーに DBD::Pg がインストールされています(バージョン 2.8.3)。
DBD::SQLite2
サーバーに DBD::SQLite2 がインストールされています(バージョン 0.33)。
確認中: オプションモジュール
これらのモジュールのインストールは任意です。お使いのサーバーにこれらのモジュールがインストールされていない場合でも、Movable Type の基本機能は動作します。これらのモジュールの機能が必要となった場合にはインストールを行ってください。
Crypt::DSA
サーバーに Crypt::DSA がインストールされています(バージョン 0.14)。
XML::SAX
サーバーに XML::SAX がインストールされています(バージョン 0.16)。
Archive::Zip
サーバーに Archive::Zip がインストールされています(バージョン 1.23)。
Storable
サーバーに Storable がインストールされています(バージョン 2.18)。
SOAP::Lite (version >= 0.5)
サーバーに SOAP::Lite がインストールされています(バージョン 0.71)。
List::Util
サーバーに List::Util がインストールされています(バージョン 1.19)。
HTML::Entities
サーバーに HTML::Entities がインストールされています(バージョン 1.35)。
Archive::Tar
サーバーに Archive::Tar がインストールされています(バージョン 1.38)。
Safe
サーバーに Safe がインストールされています(バージョン 2.16)。
IO::Uncompress::Gunzip
サーバーに IO::Uncompress::Gunzip がインストールされています(バージョン 2.011)。
Digest::SHA1
サーバーに Digest::SHA1 がインストールされています(バージョン 2.11)。
IO::Compress::Gzip
サーバーに IO::Compress::Gzip がインストールされています(バージョン 2.011)。
Image::Magick
サーバーに Image::Magick がインストールされています(バージョン 6.4.0)。
XML::Atom
サーバーに XML::Atom がインストールされています(バージョン 0.28)。
LWP::UserAgent
サーバーに LWP::UserAgent がインストールされています(バージョン 5.813)。
Mail::Sendmail
サーバーに Mail::Sendmail がインストールされています(バージョン 0.79)。
MIME::Base64
サーバーに MIME::Base64 がインストールされています(バージョン 3.07)。
File::Temp
サーバーに File::Temp がインストールされています(バージョン 0.20)。
システムのチェックを完了しました。
Movable Typeを利用できます。 お使いのサーバーには、Movable Type の動作に必要なすべてのモジュールがインストールされています。モジュールを追加インストール作業は必要はありません。マニュアルに従い、インストールを続けてください。

コメントする