Apacheのアップグレード

Michael Stewart  Author
武田洋之  翻訳

更新日 2005年 9月 29日
このドキュメントのオリジナルバージョン の更新日は2007年 12月 11日

1.  導入

GentooにおけるApacheとそのモジュールの状態は、悲惨な状態になりつつありました。 サポートの問題を引き起こし、Apacheグループが責任を持つすべての保守を難しくする数多くの問題がありました。

解決策?Apacheグループは拡大し、eclassを一緒に作成し、 すべてのモジュールを更新し、数多くのバグを修正するための何人かの新しいメンバーを補充しました。

このドキュメントでは、あなたのシステムを壊すことなく、Apacheをアップグレードする方法の詳細を説明します。 もしあなたが開発者である、または、私たちが変更した内容を知りたい、 あるいは、eclassを利用してebuildを修正する方法を知りたいなら、 Apache Developer Referenceを参照してください。

2.  アップグレード手順

GentooにおけるApacheの動作に多くの変更を加えました。 Apacheに直接関係のあるすべてのパッケージは、アップグレードする必要があり、 以前は動いていたものがこれ以降は動かないものもあります。

最初に、どのパッケージをアップグレードする必要があるかをはっきりさせましょう。 app-portage/gentoolkitの一部である、 equeryツールを使うことでこれを実施することができます。

コード表示 2.1: アップグレードすべきパッケージを探す

$ equery depends net-www/apache
[ Searching for packages depending on net-www/apache... ]
dev-db/phpmyadmin-2.5.6
dev-php/mod_php-4.3.10
dev-php/phpsysinfo-2.1-r2
net-www/mod_bandwidth-2.0.5
net-www/mod_layout-4.0.1a
net-www/mod_ldap_userdir-1.1.4
net-www/mod_loopback-1.04
net-www/mod_mp3-0.40
net-www/mod_random-2.0
net-www/mod_throttle-3.1.2-r1
net-www/mod_watch-3.18
www-apps/viewcvs-0.9.2_p20030430

重要: これは、あなたがインストールしているパッケージとは全く異なります。 このコマンドをあなた自身が実行して確かめてください。

警告: アップグレードされないApacheに依存するモジュールやパッケージがあるかもしれません。 Apacheと一緒に使用する重要ななパッケージをsearch bugzillaで検索してください。

多くのwebappは、その大部分がそれらを正常にインストール役割を担うwebapp eclassを使用しているため、 いかなる影響も受けません。 新しいリビジョンがあるかチェックしてみてください。

わたしたちは、新しいUSEフラグをいくつか追加したので、 それらをよく吟味して、 /etc/portage/package.useの適切な行に追加してください。 詳細は、ApacheがサポートするUSEフラグを見てください。

コード表示 2.2: USEフラグの設定の確認と再構築

(USEフラグとアップグレードが必要なものの確認)
# emerge --pretend --verbose --update --newuse --deep apache subversion \
mod_php mod_bandwidth mod_layout mod_ldap_userdir mod_loopback mod_mp3 \ 
mod_random mod_throttle mod_watch

(パッケージのアップグレード)
# emerge --verbose --update --newuse --deep apache subversion mod_php \
mod_bandwidth mod_layout mod_ldap_userdir mod_loopback mod_mp3 mod_random \
mod_throttle mod_watch

(前述のやり方の代わりに単にworldを更新する方がより簡単です)
# emerge --ask --verbose --update --newuse --deep world

さて、ここでApacheとモジュールの再設定が必要です。 etc-updateあるいはdispatch-confを実行して、 /etc/init.d/etc/conf.dにあるファイルを更新しましょう。 Apacheの設定ファイルが更新に表示されないことに気づくでしょう。 これは、すべての設定ファイルが移動されたことに起因します。

もし、以前のデフォルトのapache.confcommonapache.confを変更しているなら、 その変更を/etc/apache{|2}/httpd.confへ反映させる必要があります。 また、モジュールと仮想ホストの設定ファイルの場所が変更されました。 これらはそれぞれ/etc/apache2/modules.dおよび/etc/apache2/vhosts.dに置かれることになります。

変更箇所を新しい設定ファイルに移行したら、 古い設定ファイルは削除する必要があります(あるいはどこか安全な場所に移動してください)。 新しい/etc/init.d/apache{|2}は、これらのファイルをチェックし、 これらが削除されるまでApacheは起動できないようにし、 そして、再設定したApacheは新しいパスを使用することになります。

注意: デフォルトで有効となっていた多くのモジュールは無効化されます。 それらがApacheビルトインモジュールの場合、 httpd.confの適切な行のコメントを外してください。 もし外部モジュールの場合、これを有効にするためにモジュールの設定ファイルのIfDefineと同じ名前を/etc/conf.d/apache{|2}に追加してください。

それではApacheを再起動してください。

コード表示 2.3: apacheの再起動

# /etc/init.d/apache stop
# /etc/init.d/apache start

もし問題が起きたらApache Troubleshooting Guideをチェックし、 問題を解決できない場合、Gentoo Bugzillaに報告してください。 あなたが有効にしたモジュールが正しく導入されていること、そして(もしApache2を使用していて、有効にしているなら)どのMPM USEフラグを有効にしてコンパイルしたかを確認してください。 irc.freenode.net#gentoo-apacheに参加してサポートを得ることもできます。

3.  ApacheがサポートするUSEフラグ

Apacheとそのモジュールに特有のUSEフラグがあります。 Apacheはsslのような他のもっと一般的なUSEフラグもサポートしますが、 Apacheにおけるその効果は他のパッケージと相違ありませんので、 このリストには含まれていません。 サポートされるUSEフラグの完全なリストを得るにはemerge --verbose --pretend apacheを実行してください。

USEフラグ パッケージ 説明
apache2 depend.apache eclass (すべてのモジュール) Apache2.0系を使用している場合は常に設定され、 Apache1.3系を使用している場合には設定されません。 eclassはこれをどのバージョンのApacheに依存しているのかを決定するのに使います。
mpm-leader apache-2* leader MPMをビルドします。
mpm-metux apache-2* metux MPMをビルドします。
mpm-peruser apache-2* peruser MPMをビルドします。
mpm-prefork apache-2* prefork MPMをビルドします。
mpm-threadpool apache-2* threadpool MPMをビルドします。
mpm-worker apache-2* worker MPMをビルドします。
no-suexec apache suexecモジュールをビルドしません(潜在低に安全でないsuidバイナリをシステムに置きたくない人向け)
static-modules apache Apacheバイナリ内にモジュールを静的にリンクします。 このため、LoadModuleは基本的なモジュールをApacheにロードすることを要求しません。
lingerd apache-1* lingerdサポートを追加します。
no-htdocs gentoo-webroot-default カスタムファイルを上書きしないように、デフォルトwebrootを/var/www/localhostにインストールしないようにします。 代わりにwebrootは、/usr/share/doc/gentoo-webroot-default-*/webroot/にインストールされます。

注意: たくさんのmpm-* USEフラグがありますが、それらはお互いに排他的です。 あなたは、mpm-* USEフラグを1つだけ有効にすべきです。 (もし、あなたがどれも有効にしなかった場合は、mpm-preforkあるいはmpm-workerが使用されます。 どちらが使用されるかは、thread USEフラグが設定されているかどうかで決まります。)