今日は、このブログを新しいサーバーに移した。
が、苦労しつつも、まだうまくいっていない。
途中経過を記しておこうと思う。
まず、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)でエラーがでるので、検索が使えなくなってしまった。
今日はここで終了。原因調査中。
コメント