Debianなので、apt-getほにゃららでよいのですが、apache2というパッケージは仮想パッケージとしてしか存在しません。次の中から、使用するモジュールを選ばなければなりません。
古いapache1.xと同じように、ネットワークコネクション毎にプロセスを割り当てて、処理を行います。パッケージの説明を見る限り、テストされているのはこのモジュールだけ!のようなので、特に問題なければ、このパッケージを使うと良いでしょう。
特にkernel2.4以下でapache2を使う場合、以下に紹介するモジュールで利用しているスレッドとプロセスの違いが無いので、このモジュール以外を選択しても、あまり意味がありません。
また、apacheから実行される処理の中で、スレッドセーフではないライブラリを使っている場合は、このモジュールを選択する必要があります。
一定の数のプロセスが、事前に起動されて待機しているので、パフォーマンスが悪くない代わりに、搭載する物理メモリが少ないマシンでは、"一定の数"をデフォルトから変更する必要があるかもしれません。
プロセスの生成や切り替えには大きなコストがかかるので、プロセスではなくスレッドを、ネットワークコネクション毎に割り当てるプログラミングモデルです。
単純なマルチスレッドではなく、多くのスレッドを持つ複数のプロセスで、構成されているようです。こんなサーバを設計させられたら、悪い夢を見そうです(汗)。
kernel2.6でapache2を使う場合、kernel2.4に比べて圧倒的にスレッドの処理が効率化している(スレッドの生成だけを行う簡単なプログラムで実験してみると、1000倍以上の高効率です)ので、このモジュールを使う意味があります。
但し、プログラムを作る立場からいわせてもらえば、マルチスレッドは使わなくて良ければ、使いたくないプログラミングモデルなので(テストが非常に難しいので)、安定性に難があるかもしれません。
特に、開発に携わる技術者すべてが、マルチスレッドに熟練していれば良いのですが、「スレッドなんかよく分からないよ」などという人間が一人でもいると、地獄です(笑)。
2.0.39以降は、apache2-mpm-threadpoolの機能の一部が、このモジュールに組み込まれています。スレッドプールが、実装されたということでしょうか?(不安定になったということじゃないよね)。
実験的なモジュールなので、人柱(笑)以外は使うべきではありません。
よく分かりません。「異なるホストを異なるユーザ ID で動作させる」ということらしいです?
apache1.xとは、ずいぶんその設定方法が異なります。httpd.confは、0バイトのダミーファイルとなってしまいました。実際の設定ファイルは、/etc/apache2/apache2.confです。
インストールした段階では、ドキュメントの指定に関わらず、webサーバ(apache)がコンテンツヘッダで、言語の指定を行うようになっています。これは、最近のapache1.xも同様で、デフォルトでは、ISO-8859-1(Latin-1:ASCII文字に、ウムラウトがついたアルファベットをなどを含む、8ビット拡張を行ったキャラクタセット)となっています。
本来は、xxx.htmlの後ろに言語コードをつけて、xxx.html.ja.jisなどとすべきなのでしょうが、一般的では無いので、
AddDefaultCharset ISO-8859-1
を、次のようにoffとします。
AddDefaultCharset off
apache2.confで次の4行を探し、コメントをはずします。
<Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options Indexes SymLinksIfOwnerMatch IncludesNoExec </Directory>
これで、ユーザディレクトリのpublic_htmlディレクトリ以下のドキュメントを、http://host/~user/xxx.htmlなどで、参照できるようになる。もちろん、ユーザディレクトリが/home以下にないような場合は、設定は異なりますが。
apache1.xとは、ずいぶんその設定方法が異なります。apache2.confで次の箇所を探し、コメントをはずします。
AddHandler cgi-script .cgi
.cgi以外の拡張子で、cgiのスクリプトを作成する場合は、次のように拡張子を追加します。
AddHandler cgi-script .cgi pl
/etc/apache2/mods-available/から、/etc/apache2/mods-enabled/へ、設定ファイルのシンボリックリンクを張ります。
マルチスレッド版のMPM(apache2-mpm-worker)を使っている場合は、cgid.loadとcgid.confにリンクを張ります。
# cd mods-enabled/ # ln -s ../mods-available/cgid.conf . # ln -s ../mods-available/cgid.load .
こんな感じです。
マルチプロセス版のMPM(apache2-mpm-prefork)を使っている場合は、cgi.loadにリンクを張ります。
# cd mods-enabled/ # ln -s ../mods-available/cgi.load .
CGIを有効にするディレクトリを指定します。/etc/apache2/conf.d/に、適当なファイルを作成し、この中に設定を記述すれば、ロード時にその内容が反映される仕組みです。
# cd conf.d/ # vi cgiload
<Directory /home/*/public_html/cgi-bin/> Options ExecCGI </Directory>
上記の設定で、ユーザディレクトリの/cgi-bin/以下で、CGIが利用できるようになります。
apacheを再起動します。
# /etc/init.d/apache2 restart