昨日の FreeBSD によるサーバーの Perl のアップグレードの続きです。
Perl 5.12 から 5.14 へのアップグレードによって Apache 1.3 が起動しなくなってしまいました。
いつものように php5 を疑ってモジュールを読み込まないようにして apache の起動を試みましたがやはり apache は起動してくれませんでした。
いつもであれば perl 5.14 の新しいアップデートが出てくるまで古いバージョンの 5.12 へ戻すところだったのですが、深夜での作業ということもありお酒を飲んでいた勢いもあって apache を 1.3 から 2.2 へアップグレードしてしまいました。
システム全体が正常に動いているときでさえ面倒で困難の多いアップグレードなのですが、既にメンテナンスも終了した apache 1.3 から 2.2 へは移行したいと思っていました。そして apache 1.3 の開発終了は2010年1月ですでに1年半が経過しています。
しかしこの apache 1.3 の安定性が apache のアップグレードを阻んでいたようにも考えていました。
そこで今回の障害をきっかけにして apache もアップグレードしてしまおうとしたわけです。
しかし apache のアップグレードを開始すると様々な障害がありこれを一つずつ解決するのにおよそ4時間ほどの時間を要してしまいました(汗)。
まずは apache 1.3 のアンインストールからです。pkg_delete を使いました。
# pkg_delete -f apache-1.3.42
依存関係を無視してアンインストールを行うか確認があり、もちろん Yes でアンインストールを実行しました。
そして apache 2.2 のインストールです。
# cd /usr/ports
# portinstall www/apache22
後は portinstall で apache 2.2 がビルドされてインストールされるのを待つだけです。
インストールが終了したところで
/etc/rc.conf を修正しておきます。以前の apache 1.3 を起動を許可する部分を apache 2.2 用に書き換えます。apache の名前の後ろに22を書き加えるだけです。
apache_enable="YES" > apache22_enable="YES"
そして apache 2.2 を初めて起動させてみます。
# /usr/local/etc/rc.d/apache22 start
起動コマンドを実行させたところで実際に apache が起動しているかプロセスを確認してみます。
# ps ax | grep httpd
54341 ?? Ss 0:01.49 /usr/local/sbin/httpd -DNOHTTPACCEPT
54342 ?? I 0:02.78 /usr/local/sbin/httpd -DNOHTTPACCEPT
54344 ?? I 0:02.23 /usr/local/sbin/httpd -DNOHTTPACCEPT
こんな感じでプロセスが立ち上がっていたので apache 2.2 のインストールは正常に行われていて perl 5.14 へのアップグレードの影響もなかったようです。
しかしこのインストールでは今まで自宅サーバーからサービスしていたウェブサイトが表示されません。もちろん apache の設定ファイル httpd.conf の編集が行われていないためです。
古い設定ファイル (/usr/local/etc/apache/httpd.conf)を参考にしながら新しい設定ファイル (/usr/local/etc/apache22/httpd.conf) を編集しました。
何の考えもなく必要になったらディレクトリを作ってはウェブサイトの一部として機能させているものがたくさん存在していて、現在も必要なものかさえもう解らなくなってしまっています。屋上屋で作業を重ねてきた結果がこのようなときに障害として立ちはだかるようです。日頃の考えの甘さが露呈している感じです。
そのため複雑怪奇となっているディレクティブの設定もコピー&ペーストを繰り返しながら今まで同じサイトを構成するようにしました。
ここまで行ったところで apache 2.2 を再起動させたところ静的なページは表示されるようになりました。一段落した感じですが、これから第二局の始まりでした。
php5 もモジュールの組み込みなどを行ったところ再び apache 2.2 が core を吐きながら起動しなくなってしまいました。
これは先日の php5 と apache 1.3 の問題と同じことが発生しているようでした。バージョンを確認するとバージョン表示の終わりにエラーで停止する状況でした。
すぐに php拡張の extension を疑ってみました。前回どうように sqlite 関係の extension を無効にすると php も正常に動き、 apache 2.2 も起動をしてくれることを確認しました。
今回も /usr/local/etc/php/extensions.ini の中で sqlite 関係の二つを無効にすることで取り合えず問題を切り抜けました。
ようやく perl も apache も新しいバージョンで稼動したので今回の作業を終了しました。まだ小さな問題もありますが、折に触れて修正してゆく予定です。