Raq550サーバーで Movable Type 3.0

 今日は、このブログを新しいサーバーに移した。
 が、苦労しつつも、まだうまくいっていない。
 途中経過を記しておこうと思う。

 まず、Movable type 3.0 のファイルを新サーバーに移した。
ファイルがたくさんあるので、zip圧縮でアップロードして展開したが、これだとどういうわけかブラウザでエラーが出てしまう。
 CGIでエラーが出るならともかく、普通のhtmlファイルもエラーが出る。
 シェル上から unzip した後に、所有者名とグループはきちんと書き換えたのに、なぜだろうと思ったが、考えてみても始まらないので、圧縮しないで1ファイルずつFTPでアップロードし直した。
 それでも結果は変わらない。仕方ないので原因を分析することにした。

 新サーバーは改造版Raq550で、今までのサーバーは Raq3 である。
 どこが違うかを調べたら、httpdの初期設定が若干異なっているらしい。
 Raq3 までは、ユーザーサイトでの .htaccess がすべて許可されていたのに、Raq550 では制限されているらしい。
 私のブログは .htaccess ファイルを追加していたので、ここで引っかかっていたことが分かった。さっそく access.conf の設定を変更した。

 さっそく、mt-check.cgi を実行してみると、MySQL が使える状態になっていないことに気づいた。
Raq550 は標準で MySQL がインストールされているけれども、標準では使えるようになっておらず、最初にいくつかの設定が必要とのことである。

(1)サーバー起動時に自動起動するように、次のコマンドをシェル上から実行

  /sbin/chkconfig mysql on 

(2)PHPから使用できるように、php.iniファイルを変更

  /etc/httpd/php.ini のファイルに

  extension=mysql.so

  の1行を追加

(3)次のようにシンボリックリンクを作成する。

  ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock

(4)サーバーを再起動 (httpd と MySQL も自動的に再起動)


 これで MySQL が使えるようになったので、DBの設定をした。
 でもまだ、MySQL が使える状態にならない。
 DBD::mysql というのが入っていないのが原因のようである。
 Perl から MySQL を使うのにはこれが必要とのことで、今までのサーバーには確かに入っていた。

 さっそくインストールするのだが、できるだけ簡単にやりたいので、CPAN という、Perlモジュールのインストールツールを使うことにした。
 最初に DBI もインストール必要があるそうなので、次の2つのコマンドを1個ずつ実行した。プロンプトの質問がたくさんきて[ENTER]キーを押し続けた。

  /usr/bin/perl -MCPAN -e'install DBI'
  /usr/bin/perl -MCPAN -e'install DBD::mysql'

 この2つのインストールが終わると、MySQLが使えるようになった。

 さっそく、 mt-load.cgi を実行したら、次のようなエラーが出た。

Insertion test failed on SQL error Column 'author_type' cannot be null

 考えてみればこの mt-load.cgi は、アップグレード版だったことに気づいた。
 とりあえず無視して、ログインしようとしたけど、ユーザー名 Melody、パスワード Nelson でログインすることができなかった。

 仕方ないので、今までのサーバーのMySQLデータベースをそのまま上書きすることを思いついた。
 /var/lib/mysql/ の中にデータベースの中身が入っているので、その中のファイルをすべて新サーバーの同じ場所に上書き保存して、パーミッションや所有者名等を元と同じにした。
 これは成功だったようで、見事に Movable Type にログインすることができた。

 ひととおり動作確認してみたら、サーチ機能(mt-search.cgi)でエラーが出ることに気づいた。
 シェル上で、mt-search.cgi を実行してみると、次のようなエラーが出る。


[root cgi-bin]# ./mt-search.cgi
Use of uninitialized value in substitution (s///) at lib/MT/App.pm line 507.
Use of uninitialized value in split at lib/MT/App.pm line 508.
Use of uninitialized value in concatenation (.) at lib/MT/App.pm line 512.
Use of uninitialized value in subroutine entry at /usr/lib/perl5/5.6.0/i386-linux/DB_File.pm line 259.


 インターネット上で調べたら、どうやら DB_File.pm のバージョンを調べてみる必要があるとのことらしい。
 
 さっそくサーバー内の DB_File.pm のバージョンを調べたら、1.75 となっていた。このファイルだけタイムスタンプが新しかったので、後から入れたアプリケーションがこれを上書きしたのだと思う。
 今まで動いていた方のサーバーでは、それが 1.65 になっているので、これを上書きしてみたら、エラーが出なくなった。

 これでめでたし、と思いきや、今度はサーバーの管理画面が機能しなくなってしまった。
 このままではサーバーの管理ができなくなってしまうので、DB_File.pm のバージョン再び 1.75 に戻すことにした。

 当然のことながら、サーチ機能(mt-search.cgi)でエラーがでるので、検索が使えなくなってしまった。

 今日はここで終了。原因調査中。