ひさしぶりに Apache 1.3系をコンパイルしたよ。

mod_ssl なんかも組み込んで。実に懐かしい。そしてApache2ばかり使うようになった今となっては、なんて面倒なモノなのやら。

mod_sslを組み込んでApache1.3系を作るには、mod_ssl付属の INSTALL ファイルを見るのが一番良い。手順どおりやればだいたい問題なく作れる。
今回使ったバージョンは以下のとおり。

  • Apache 1.3.33
  • OpenSSL 0.9.7d (わけあって古いもの。良い子は真似しないこと。)
  • mm 1.1.3 (これも古い。最新版は1.3.1だけど、1.1系でないとコンパイル通らないっぽい)

こんなところ。

$ cd mod_ssl-2.8.22-1.3.33
$ ./configure \
--with-apache=../apache_1.3.33 \
--with-ssl=../openssl-0.9.7d \
--with-mm=../mm-1.1.3 \
--prefix=/opt/apache1-3-33 \
--enable-shared=max

そして出力されたメッセージが導くままに

$ cd ../apache_1.3.33
$ make

と、ここまでやって思い出した。遅いよ俺。MaxClientsというかHARD_SERVER_LIMITの話。
Apache2からは、ServerLimitにて設定できるようになっている、最大起動プロセス数(この言い方はpreforkの場合か)の設定は、1.3時代にはコンパイル時にハードコーディングされていて、後から変更することができない。しかも、この値はWINDOWSなら1024、NETWAREなら2048で、それ以外は256となっている。
つまり、MaxClientsは256以上に設定できないようになっていて、この制限を大きくするにはコンパイル時に小細工をする必要がある、ということ。
(余談になるけれど、ServerLimitにしても実は20000という上限がある。これは1桁書き間違えて酷い目にあうかもしれない我々に対するApacheの中の人たちの優しさ。)

ほんと、心の底から忘れてたよ。

$ env CFLAGS="-DHARD_SERVER_LIMIT=1024" \
./configure \
--with-apache=../apache_1.3.33 \
--with-ssl=../openssl-0.9.7d \
--with-mm=../mm-1.1.3 \
--prefix=/opt/apache1-3-33 \
--enable-shared=max

このように、configure に CFLAGS="-DHARD_SERVER_LIMIT=1024" などと与えてあげれば良い。mod_sslのconfigureはそのままApacheのconfigureを叩いてくれるので、CFLAGSはApacheのconfigureに引き継がれるのです。
その後makeして無事終了。
詳しくはGoogle神様に聞くか、Apacheのソースツリーで

$ grep -r HARD_SERVER_LIMIT *

なんてことをやらかしてください。

ほんとに1024になったのかしら?という疑問は

$ ./src/httpd -V

と、出来上がったhttpd に -V オプションを渡すと確認できる。

$ ./src/httpd -V
Server version: Apache/1.3.33 (Unix)
Server built:   Aug -- 2005 --:--:--
Server's Module Magic Number: --------:--
Server compiled with....
(省略)
 -D HARD_SERVER_LIMIT=1024
(省略)