0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Webサーバーとモジュール

Last updated at Posted at 2022-11-27

はじめに

セキュア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内で。どこにモジュールのファイルがあるか調べる。

/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モジュールに関する設定ファイルがたくさんある。

試しにその一つのファイルを確認する。

/etc/httpd/conf.modules.d/00-base.conf
  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が
全て詰められていて可読性が悪かったらしい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?