はじめに
セキュアDNSサーバー構築が終わり、WEBサーバー構築着手している最中で一つ気づきがあったのでメモ。
DNS構築ではBIND利用したが、モジュールについて一切触れてこなかった。
しかしWebサーバーでは、設定ファイル内でモジュールを有効or無効の設定がとても多いなと印象を受けた。
モジュールに関しての知識も曖昧だったので簡単にメモにした。
モジュールとは
ある機能を実現するひとまとまりの部品のこと。
今回WEBサーバー構築に利用したApacheは、必要最低限な機能だけをコアに据えて、残りは選択可能と
するモジュール構造を採用している。
モジュールとは、ある機能を実現するためのソフトウェアで、プログラム本体に組み込んだり、
交換することが可能な小さなプログラムのこと。
以下参照
http://cos.linux-dvr.biz/archives/20
情的モジュールとDSOモジュール
Webサーバーの多くの機能は、モジュールによって実現される。
モジュールはApacheの設定ファイルを編集することで、簡単に有効/無効を切り替えることができます
Apacheに利用したい機能のモジュールを追加する方法は次の2通り。
①静的モジュール:Apacheをビルドするときに実行ファイルの中にモジュールを組み込む
②DSO(Dynamic Shared Object)モジュール:モジュールを単独ファイルとして作成し、
Apacheの起動時に動的に追加する。
今回は②のDSO(Dynamic Shared Object)モジュールを利用し、機能追加をする。(参照だけにした)
DSO(Dynamic Shared Object)モジュールによるモジュール機能有効化
設定ファイルからそれぞれのモジュールに行き付く方法は以下の通り。
まずApacheの設定ファイル/etc/httpd/conf/httpd.conf
内で。どこにモジュールのファイルがあるか調べる。
48 # Dynamic Shared Object (DSO) Support
49 #
50 # To be able to use the functionality of a module which was built as a DSO you
51 # have to place corresponding `LoadModule' lines at this location so the
52 # directives contained in it are actually available _before_ they are used.
53 # Statically compiled modules (those listed by `httpd -l') do not need
54 # to be loaded here.
55 #
56 # Example:
57 # LoadModule foo_module modules/mod_foo.so
58 #
59 Include conf.modules.d/*.conf
59行目、Include conf.modules.d/*.conf
で
Apacheで動的モジュールを利用したい場合、`conf.modules.d'ディレクトリ内にconfファイルを置きましょうと書いてある。 このパスはフルパスではない。
25 # ServerRoot: The top of the directory tree under which the server's
26 # configuration, error, and log files are kept.
33 #
34 ServerRoot "/etc/httpd"
全てのデーモンの設定ファイル上部に必ずそのデーモンの設定ファイル・エラー・ログファイルが格納されてる
「The top of the directory tree」が記述されている。
今回は34行目の/etc/httpd
からモジュールについての設定ファイルのフルパスがわかる。
/etc/httpd/conf.modules.d/*.conf
[root@sv ~]# ls -l /etc/httpd/conf.modules.d/
合計 52
-rw-r--r--. 1 root root 3311 11月 16 16:31 00-base.conf
-rw-r--r--. 1 root root 139 11月 8 20:29 00-dav.conf
-rw-r--r--. 1 root root 41 11月 8 20:29 00-lua.conf
-rw-r--r--. 1 root root 948 11月 8 20:29 00-mpm.conf
-rw-r--r--. 1 root root 787 11月 8 20:29 00-optional.conf
-rw-r--r--. 1 root root 1073 11月 8 20:29 00-proxy.conf
-rw-r--r--. 1 root root 41 11月 8 20:29 00-ssl.conf
-rw-r--r--. 1 root root 88 11月 8 20:29 00-systemd.conf
-rw-r--r--. 1 root root 451 11月 8 20:29 01-cgi.conf
-rw-r--r--. 1 root root 45 5月 19 2021 10-fcgid.conf
-rw-r--r--. 1 root root 45 5月 11 2022 10-h2.conf
-rw-r--r--. 1 root root 57 5月 11 2022 10-proxy_h2.conf
-rw-r--r--. 1 root root 496 11月 8 20:31 README
同ディレクトリー配下を確認すると、apacheモジュールに関する設定ファイルがたくさんある。
試しにその一つのファイルを確認する。
1 #
2 # This file loads most of the modules included with the Apache HTTP
3 # Server itself.
4 #
5
6 LoadModule access_compat_module modules/mod_access_compat.so
7 LoadModule actions_module modules/mod_actions.so
8 LoadModule alias_module modules/mod_alias.so
9 LoadModule allowmethods_module modules/mod_allowmethods.so
10 LoadModule auth_basic_module modules/mod_auth_basic.so
11 LoadModule auth_digest_module modules/mod_auth_digest.so
12 LoadModule authn_anon_module modules/mod_authn_anon.so
13 LoadModule authn_core_module modules/mod_authn_core.so
14 LoadModule authn_dbd_module modules/mod_authn_dbd.so
15 LoadModule authn_dbm_module modules/mod_authn_dbm.so
16 LoadModule authn_file_module modules/mod_authn_file.so
17 LoadModule authn_socache_module modules/mod_authn_socache.so
18 LoadModule authz_core_module modules/mod_authz_core.so
19 LoadModule authz_dbd_module modules/mod_authz_dbd.so
20 LoadModule authz_dbm_module modules/mod_authz_dbm.so
21 LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
22 LoadModule authz_host_module modules/mod_authz_host.so
23 LoadModule authz_owner_module modules/mod_authz_owner.so
24 LoadModule authz_user_module modules/mod_authz_user.so
25 LoadModule autoindex_module modules/mod_autoindex.so
26 LoadModule brotli_module modules/mod_brotli.so
27 LoadModule cache_module modules/mod_cache.so
28 LoadModule cache_disk_module modules/mod_cache_disk.so
29 LoadModule cache_socache_module modules/mod_cache_socache.so
各行がそれぞれのモジュール(機能)であり、追加したい場合はLoadModuleをつけ(デフォルトのまま)、
無効にしたい場合にはコメントアウトする。
例えば、64行目は一般ユーザのディレクトリの公開ディレクトリにするモジュール。
これを無効にするためにはコメントアウトする
昔のApacheはメインの設定ファイル/etc/httpd/conf/httpd.conf
に これらのLoadするModuleが
全て詰められていて可読性が悪かったらしい。