印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux Apache 1.3 から 2.2 への移行手順

Apache 1.3 の設定ファイルを,Apache 2.2 へ移行する方法について簡単にまとめておく。

■ ■ ■

Apache のバージョンアップについて検討する。Vine Linux 3.2 までの標準は Apache 1.3 だった。Vine Linux 4.1 がリリースされ,標準が Apache2 となった (Apache 2.2)。Apache 1.3 と Apache 2.2 では,設定ファイルの内容が大きく違う。Apache 1.3 の設定ファイルを Apache 2.2 に持ち込んで,直していくのは間違いである。とてつもなく時間がかかるし,ハマることになる。

この記事は,Vine Linux 3.2, Apache 1.3.33 から Vine Linux 4.1, Apache 2.2.3 へ設定ファイルを移行するための方針についてのメモである。Vine Linux 4.1 は Windows XP のバーチャルPCで動作テストを行いつつ,作業をすすめている (nlog(n): Virtual PC 2007 で Vine Linux)。バーチャルPCは,「状態を保存する」で終了することができるので,次に起動する時間を短縮することができて嬉しいのだ。

設定ファイルは,Vine 3.2 では /etc/httpd/conf/httpd.conf,Vine 4.1 では /etc/apache2/conf/httpd.conf (または apache2.conf) となっている。ログが保存されるディレクトリは,Vine 3.2 では /var/log/httpd だったが,Vine 4.1 では /var/log/apache2 となっている。

移行の基本方針

移行の基本方針は 9.2.2. Apache HTTP Server 1.3 設定ファイルを 2.0 に移行する に従うのがよい。

  1. Apache 1.3 の設定ファイルの変更点を抜き出す
  2. Apache 2.2 の設定ファイルに反映する
  3. Apache 2.2 で文法チェックをしながら修正する

最初に,Apache 1.3 で,オリジナルの設定ファイルと最新の設定ファイルを比較して違っている部分を抜き出す。

# diff -u httpd.conf.org httpd.conf

追加されている行の行頭には「+」,削除されている行の行頭には「-」がつく。これを Apache 2.2 の設定ファイルに反映する。ほとんどのディレクティブは変更がないので,そのまま書いてしまってよい。一番大きな変更は,Port ディレクティブの廃止だろう (9.2.2.1.1. インターフェースとポートのバインド)。Apache 1.3 では,

# Apache 1.3
Port 80
ServerName www.example.com

と記述していた部分を,Apache 2.2 では,

# Apache 2.2
Listen 80
ServerName www.example.com:80

と書くことになる。

Vine Linux 4.1 の Apache 2.2 文法チェックは,起動スクリプト

# /etc/init.d/apache2 configtest

あるいは,実行ファイルを直接たたいて

# /usr/sbin/apache2ctl configtest

行うことができる。

Apache 1.3 の設定ファイルを使ってはいけない理由

私は最初,Apache 1.3 の設定ファイルを Apache 2.2 の設定ファイルにコピーして,エラーが出た部分だけ直していこうとした。しかし,これは大きな間違いだった。ディレクティブとしては大きな違いはないが,モジュール名が変わっていることがあるのである。例えば,次のようなものがある。

# Apache 1.3
LoadModule config_log_module modules/mod_log_config.so

上のモジュールが,次に変わっているのである。

# Apache 2.2
LoadModule log_config_module modules/mod_log_config.so

config_log_module が log_config_module になっていることに注意。そして,エラーとしては,「モジュール名が違うよ」と出るとは限らない。したがって,モジュールをチェックしながら作業するのは効率が悪いのである。

その他の注意点

その他に注意する点は,Apache 2.2 の設定ファイルは,外部の設定ファイルを取り込むようになっているということである。

Include conf.d/*.conf

Include ディレクティブにより,/etc/apache2/conf.d ディレクトリ内の *.conf にマッチする設定ファイルが読み込まれる。例えば,SSL 関連の設定ファイルは conf.d/ssl.conf となるので,conf/httpd.conf 内で SSL の設定を行うと,2重に宣言することになってしまい,

Address already in use: make_sock: could not bind to address 0.0.0.0:443

のようなエラーを引き起こすことになるので注意が必要だ。このエラーには以前悩まされたことがある (nlog(n): Vine Linux 4.1 への移行を試すが元に戻す)。

お盆休みに Vine Linux 3.2 から 4.1 に移行するぞ。また断念することのないようにしたい (nlog(n): Vine Linux 4.1 への移行を試すが元に戻す)。ぬをーっ。

Posted by n at 2007-08-12 01:49 | Edit | Comments (0) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?