httpd-2.0.44

[サーバの実験室 Slackware]

作成 : 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指定
accessaccess_modulemod_access.so
auth_anonauth_anon_modulemod_auth_anon.so
auth_dbmauth_dbm_modulemod_auth_dbm.so
auth_digestauth_digest_modulemod_auth_digest.so
isapiisapi_modulemod_isapi.so×
file_cachefile_cache_modulemod_file_cache.so×
echoecho_modulemod_echo.so×
charset_litecharset_lite_modulemod_charset_lite.so×
cachecache_modulemod_cache.so×
disk_cachedisk_cache_modulemod_disk_cache.so×
mem_cachemem_cache_modulemod_mem_cache.so×
exampleexample_modulemod_example.so×
case_filtercase_filter_modulemod_case_filter.so×
case_filter_incase_filter_in_modulemod_case_filter_in.so×
ldapldap_modulemod_ldap.so×
auth_ldapauth_ldap_modulemod_auth_ldap.so×
ext_filterext_filter_modulemod_ext_filter.so
includeinclude_modulemod_include.so
deflatedeflate_modulemod_deflate.so×
log_configlog_config_modulemod_log_config.so
envenv_modulemod_env.so
mime_magicmime_magic_modulemod_mime_magic.so
cern_metacern_meta_modulemod_cern_meta.so
expiresexpires_modulemod_expires.so
headersheaders_modulemod_headers.so
usertrackusertrack_modulemod_usertrack.so
unique_idunique_id_modulemod_unique_id.so
setenvifsetenvif_modulemod_setenvif.so
proxyproxy_modulemod_proxy.so×
proxy_connectproxy_connect_modulemod_proxy_connect.so×
proxy_ftpproxy_ftp_modulemod_proxy_ftp.so×
proxy_httpproxy_http_modulemod_proxy_http.so×
sslssl_modulemod_ssl.so×
optional_hook_exportoptional_hook_export_modulemod_optional_hook_export.so×
optional_hook_importoptional_hook_import_modulemod_optional_hook_import.so×
optional_fn_importoptional_fn_import_modulemod_optional_fn_import.so×
optional_fn_exportoptional_fn_export_modulemod_optional_fn_export.so×
bucketeerbucketeer_modulemod_bucketeer.so×
httphttp_modulemod_http.sodefault
mimemime_modulemod_mime.so
davdav_modulemod_dav.so
statusstatus_modulemod_status.so
autoindexautoindex_modulemod_autoindex.so
asisasis_modulemod_asis.so
infoinfo_modulemod_info.so
suexecsuexec_modulemod_suexec.so×
cgicgi_modulemod_cgi.so
cgidcgid_modulemod_cgid.so×
dav_fsdav_fs_modulemod_dav_fs.so
vhost_aliasvhost_alias_modulemod_vhost_alias.so
negotiationnegotiation_modulemod_negotiation.so
dirdir_modulemod_dir.so
imapimap_modulemod_imap.so
actionsactions_modulemod_actions.so
spelingspeling_modulemod_speling.so
userdiruserdir_modulemod_userdir.so
aliasalias_modulemod_alias.so
rewriterewrite_modulemod_rewrite.so
soso_modulemod_so.sodefault

モジュールを指定しなくても、最低限の機能をサポートする 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

[サーバの実験室 Slackware]