Apache の各機能はモジュールとして提供されています。これらのモジュールは、コンパイル時に Apache に組み込むことも、シェアドオブジェクトとして Apache の起動時にメモリにロードすることも可能です。このように、Apache の API に準拠して作成されたシェアドオブジェクトは、DSO(Dynamic Shared Object)と呼ばれます。
Apache のコンパイル時に組み込まれたモジュールは、以下のコマンドで確認することができます。
# /user/sbin/httpd -l Compiled in modules: core.c prefork.c http_core.c mod_so.c |
# /usr/sbin/httpd.worker -l Compiled in modules: core.c worker.c http_core.c mod_so.c |
mod_so.c が、Apache の起動時に DSO モジュールを読み込むためのメカニズムを提供しています。このモジュールの機能により Apache をリコンパイルせずに DSO モジュールを追加、または削除することができます。実際に Apache の起動時に読み込まれる DSO モジュールは、/etc/http/conf/modules で指定されています。Turbolinux 10 Server の /etc/http/conf/modules の内容は以下の通りです。
# Module list for httpd # This file was generated by /usr/lib/httpd/scripts/update-module-list. Don't edit by hand. # modules provided by httpd.apache.org.: LoadModule access_module /usr/lib/httpd/modules/mod_access.so LoadModule auth_module /usr/lib/httpd/modules/mod_auth.so LoadModule auth_anon_module /usr/lib/httpd/modules/mod_auth_anon.so LoadModule auth_dbm_module /usr/lib/httpd/modules/mod_auth_dbm.so LoadModule auth_digest_module /usr/lib/httpd/modules/mod_auth_digest.so LoadModule file_cache_module /usr/lib/httpd/modules/mod_file_cache.so LoadModule cache_module /usr/lib/httpd/modules/mod_cache.so LoadModule disk_cache_module /usr/lib/httpd/modules/mod_disk_cache.so LoadModule mem_cache_module /usr/lib/httpd/modules/mod_mem_cache.so LoadModule include_module /usr/lib/httpd/modules/mod_include.so LoadModule deflate_module /usr/lib/httpd/modules/mod_deflate.so LoadModule log_config_module /usr/lib/httpd/modules/mod_log_config.so LoadModule log_forensic_module /usr/lib/httpd/modules/mod_log_forensic.so LoadModule env_module /usr/lib/httpd/modules/mod_env.so LoadModule mime_magic_module /usr/lib/httpd/modules/mod_mime_magic.so LoadModule cern_meta_module /usr/lib/httpd/modules/mod_cern_meta.so LoadModule expires_module /usr/lib/httpd/modules/mod_expires.so LoadModule headers_module /usr/lib/httpd/modules/mod_headers.so LoadModule usertrack_module /usr/lib/httpd/modules/mod_usertrack.so LoadModule unique_id_module /usr/lib/httpd/modules/mod_unique_id.so LoadModule setenvif_module /usr/lib/httpd/modules/mod_setenvif.so LoadModule proxy_module /usr/lib/httpd/modules/mod_proxy.so LoadModule proxy_connect_module /usr/lib/httpd/modules/mod_proxy_connect.so LoadModule proxy_ftp_module /usr/lib/httpd/modules/mod_proxy_ftp.so LoadModule proxy_http_module /usr/lib/httpd/modules/mod_proxy_http.so LoadModule mime_module /usr/lib/httpd/modules/mod_mime.so LoadModule dav_module /usr/lib/httpd/modules/mod_dav.so LoadModule status_module /usr/lib/httpd/modules/mod_status.so LoadModule autoindex_module /usr/lib/httpd/modules/mod_autoindex.so LoadModule asis_module /usr/lib/httpd/modules/mod_asis.so LoadModule info_module /usr/lib/httpd/modules/mod_info.so LoadModule suexec_module /usr/lib/httpd/modules/mod_suexec.so LoadModule cgi_module /usr/lib/httpd/modules/mod_cgi.so LoadModule cgid_module /usr/lib/httpd/modules/mod_cgid.so LoadModule dav_fs_module /usr/lib/httpd/modules/mod_dav_fs.so LoadModule vhost_alias_module /usr/lib/httpd/modules/mod_vhost_alias.so LoadModule negotiation_module /usr/lib/httpd/modules/mod_negotiation.so LoadModule dir_module /usr/lib/httpd/modules/mod_dir.so LoadModule imap_module /usr/lib/httpd/modules/mod_imap.so LoadModule actions_module /usr/lib/httpd/modules/mod_actions.so LoadModule speling_module /usr/lib/httpd/modules/mod_speling.so LoadModule userdir_module /usr/lib/httpd/modules/mod_userdir.so LoadModule alias_module /usr/lib/httpd/modules/mod_alias.so LoadModule rewrite_module /usr/lib/httpd/modules/mod_rewrite.so |
このように、各 DSO モジュールを読み込むには、LoadModule ディレクティブを使用します。書式は以下の通りです。
filename に指定されたオブジェクトファイルを module というモジュール識別子で有効にします。filename には、モジュールのパスを指定します。
![]() | Apache1.3 までは、モジュールをロードする順序の指定が非常に重要でしたが、Apache2.0 では Apache 自身が自動的に順序を解決します。それに伴い、Addmodule、ClearModuleList の両ディレクティブが廃止されています。 |
Turbolinux 10 Server の初期設定では、全てのモジュールを Apache の起動時に読み込んでいます。不要なモジュールは、行頭にコメント記号(#)を記述して、無効にすることができます。例えば、mod_status を無効にするには、テキストエディタで次の行をコメントにします。
#LoadModule status_module /usr/lib/httpd/modules/mod_status.so |
これで、Apache を再起動することにより mod_status が無効になります。設定を変更した場合は、必ず Apache を再起動してください。Apache は起動時に設定ファイルを読み込みますので、再起動しないと設定ファイルの変更は Apache の動作に反映されません。
また、Turbolinux 10 Server には Apache から標準で提供されている DSO モジュールの他に、以下のような Apache 以外のパッケージから提供されている DSO モジュールも収録されています。
表 9-5. Apache 以外のパッケージから提供されている DSO モジュール
| mod_perl | CGI 等で利用される Perl スクリプトを高速に動作させるためのモジュール |
| mod_ruby | mod_perl と同様に ruby スクリプトを高速に動作させるためのモジュール |
| mod_php | Apache で PHP を利用するためのモジュール |
| mod_encoding | Apache で HTTP リクエストおよびヘッダに含まれる文字コードの変換機能を提供 するモジュール |
| mod_python | Apache で Python を利用するためのモジュール |
これらのモジュールを追加するための LoadModule ディレクティブの指定は、/etc/http/conf.d/ ディレクトリ以下の拡張子 .conf のファイルに記述されています。例えば、/etc/http/conf.d/php4.conf には、mod_php4.so モジュールを読み込むための指定が以下のように記述されています。
LoadModule php4_module /usr/lib/httpd/modules/mod_php4.so |
![]() | /etc/http/conf/modules や /etc/http/conf.d/*.conf は、/etc/httpd/conf/httpd.conf の Include ディレクティブの指定により、読み込まれています。
|