httpd-2.0.44
作成 : 2003/02/04
httpd-2.0.44 に必要なパッケージ
apxs や dbmmanage は perl スクリプトで記述されているため、perl5 が必要(インストール方法は perl-5.8.0 を参照)。
mod_ssl を使用するためには、openssl が必要(インストール方法は openssl-0.9.7 を参照)。
httpd-2.0.44の入手と展開
httpd-2.0.44 のソースを、sunsite などからもらってくる。 /usr/local/src とかに置いて、展開。
# tar -zxvf httpd-2.0.44.tar.gz
configure
configure を実行するときに、モジュール(拡張機能を提供)を選択する。 さらに、モジュールを httpd バイナリに静的に組み込むか、DSO(Dynamic Shared Object)として動的に組み込むかを選択することができる。
静的に組み込むときは、--enable-modules="MODULE1 MODULE2 ...." または --enable-MODULE=static でモジュールを選択する。 動的に組み込むときは、--enable-mods-shared="MODULE1 MODULE2 ...." または --enable-MODULE=shared でモジュールを選択する。
指定したモジュールによって、使用できるディレクティブが決まる。 モジュールとディレクティブの関係については、apache.org のディレクティブ クイックリファレンスあたりを参照。 モジュール名として all を指定すると多くのモジュールをインストールしてくれるが、ssl(mod_ssl)などは含まれていない。 モジュールの一覧と、all を指定したときインストールされるかは次のとおり。
| モジュール名 | モジュール識別子 | DSO ファイル名 | all指定 |
|---|---|---|---|
| access | access_module | mod_access.so | ○ |
| auth_anon | auth_anon_module | mod_auth_anon.so | ○ |
| auth_dbm | auth_dbm_module | mod_auth_dbm.so | ○ |
| auth_digest | auth_digest_module | mod_auth_digest.so | ○ |
| isapi | isapi_module | mod_isapi.so | × |
| file_cache | file_cache_module | mod_file_cache.so | × |
| echo | echo_module | mod_echo.so | × |
| charset_lite | charset_lite_module | mod_charset_lite.so | × |
| cache | cache_module | mod_cache.so | × |
| disk_cache | disk_cache_module | mod_disk_cache.so | × |
| mem_cache | mem_cache_module | mod_mem_cache.so | × |
| example | example_module | mod_example.so | × |
| case_filter | case_filter_module | mod_case_filter.so | × |
| case_filter_in | case_filter_in_module | mod_case_filter_in.so | × |
| ldap | ldap_module | mod_ldap.so | × |
| auth_ldap | auth_ldap_module | mod_auth_ldap.so | × |
| ext_filter | ext_filter_module | mod_ext_filter.so | ○ |
| include | include_module | mod_include.so | ○ |
| deflate | deflate_module | mod_deflate.so | × |
| log_config | log_config_module | mod_log_config.so | ○ |
| env | env_module | mod_env.so | ○ |
| mime_magic | mime_magic_module | mod_mime_magic.so | ○ |
| cern_meta | cern_meta_module | mod_cern_meta.so | ○ |
| expires | expires_module | mod_expires.so | ○ |
| headers | headers_module | mod_headers.so | ○ |
| usertrack | usertrack_module | mod_usertrack.so | ○ |
| unique_id | unique_id_module | mod_unique_id.so | ○ |
| setenvif | setenvif_module | mod_setenvif.so | ○ |
| proxy | proxy_module | mod_proxy.so | × |
| proxy_connect | proxy_connect_module | mod_proxy_connect.so | × |
| proxy_ftp | proxy_ftp_module | mod_proxy_ftp.so | × |
| proxy_http | proxy_http_module | mod_proxy_http.so | × |
| ssl | ssl_module | mod_ssl.so | × |
| optional_hook_export | optional_hook_export_module | mod_optional_hook_export.so | × |
| optional_hook_import | optional_hook_import_module | mod_optional_hook_import.so | × |
| optional_fn_import | optional_fn_import_module | mod_optional_fn_import.so | × |
| optional_fn_export | optional_fn_export_module | mod_optional_fn_export.so | × |
| bucketeer | bucketeer_module | mod_bucketeer.so | × |
| http | http_module | mod_http.so | default |
| mime | mime_module | mod_mime.so | ○ |
| dav | dav_module | mod_dav.so | ○ |
| status | status_module | mod_status.so | ○ |
| autoindex | autoindex_module | mod_autoindex.so | ○ |
| asis | asis_module | mod_asis.so | ○ |
| info | info_module | mod_info.so | ○ |
| suexec | suexec_module | mod_suexec.so | × |
| cgi | cgi_module | mod_cgi.so | ○ |
| cgid | cgid_module | mod_cgid.so | × |
| dav_fs | dav_fs_module | mod_dav_fs.so | ○ |
| vhost_alias | vhost_alias_module | mod_vhost_alias.so | ○ |
| negotiation | negotiation_module | mod_negotiation.so | ○ |
| dir | dir_module | mod_dir.so | ○ |
| imap | imap_module | mod_imap.so | ○ |
| actions | actions_module | mod_actions.so | ○ |
| speling | speling_module | mod_speling.so | ○ |
| userdir | userdir_module | mod_userdir.so | ○ |
| alias | alias_module | mod_alias.so | ○ |
| rewrite | rewrite_module | mod_rewrite.so | ○ |
| so | so_module | mod_so.so | default |
モジュールを指定しなくても、最低限の機能をサポートする core モジュールはもれなく静的にインストールされる。 なので、オプションをつけずに configure を実行してもかまわない。
httpd-2.0.44 ディレクトリの中に適当なディレクトリを作成して、その中で configure を実行。 オプションとして、--enable-mods-shared=all --enable-ssl=static を指定する。 (mod_ssl は静的にインストールする)
# ../configure --enable-mods-shared=all --enable-ssl=static
make
make。
# make
make install
make install。
# make install
/usr/local/apache2 にインストールされる。 httpd は bin ディレクトリ、設定ファイル httpd.conf は conf ディレクトリ、DSO ファイルは modules ディレクトリにインストールされる。
mod_ssl インストール時の注意
mod_ssl を DSO としてインストールすると、下のようなエラーになってしまった。 configure するときに、--enable-ssl=static(--enable-ssl や --enable-modules=ssl ではうまくいかない)を指定すること! (opensslをビルドするとき、./config shared で共有ライブラリを作成するようにすれば、DSO でも大丈夫らしい)
# /usr/local/apache2/apache2/bin/apachectrl sslstart
Syntax error on line 249 of /usr/local/apache2/conf/httpd.conf:
Cannot load /usr/local/apache2/modules/mod_ssl.so into server: /usr/local/apache2/modules/mod_ssl.so: undefined symbol: X509_free
モジュールの確認
静的にインストールされたモジュールは、httpd -l で確認することができる。 core.c はコアモジュール、http_core.c は?、mod_so.c は DSOサポートのためのモジュール。 prefork.c は Unix 用の MPM(Multi Processing Module:プラットフォームごとにサーバ基本機能をモジュール化したもの)。
# /usr/local/apache2/bin/httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
mod_ssl.so
動的なモジュールは、modules ディレクトリにインストールされる。 これらのモジュールを使用する場合は、設定ファイル(httpd.conf)に LoadModule ディレクティブを記述して、ロードするモジュールを指定する。
# ls -l /usr/local/apache2/modules
httpd.exp mod_autoindex.so mod_headers.so mod_setenvif.so
mod_access.so mod_cern_meta.so mod_imap.so mod_speling.so
mod_actions.so mod_cgi.so mod_include.so mod_status.so
mod_alias.so mod_dav.so mod_info.so mod_unique_id.so
mod_asis.so mod_dav_fs.so mod_log_config.so mod_userdir.so
mod_auth.so mod_dir.so mod_mime.so mod_usertrack.so
mod_auth_anon.so mod_env.so mod_mime_magic.so mod_vhost_alias.so
mod_auth_dbm.so mod_expires.so mod_negotiation.so
mod_auth_digest.so mod_ext_filter.so mod_rewrite.so
httpd バイナリのファイルサイズ
DSO を使用するよう --enable-mods-shared=all --enable-modules=ssl を指定してコンパイルした時、httpd のファイルサイズは 1,565,041 バイト。 モジュールを httpd バイナリに含めるよう --enable-modules="all ssl" を指定してコンパイルした時、httpd のファイルサイズは 5,941,746 バイト。
起動スクリプト
/etc/rc.d/rc.M に、Web サーバを起動するような記述がある。
# Start Web server: if [ -x /etc/rc.d/rc.httpd ]; then . /etc/rc.d/rc.httpd start fi
実際に httpd を起動するスクリプトを、/etc/rc.d/rc.httpd として作成してやればよい。
#!/bin/sh
#
# Start the Apache web server
#
case "$1" in
'start')
/usr/local/apache2/bin/apachectl start ;;
'stop')
/usr/local/apache2/bin/apachectl stop ;;
'restart')
/usr/local/apache2/bin/apachectl restart ;;
*)
echo "usage $0 start|stop|restart" ;;
esac