質問: 例えばこんな感じでモジュールを読み込むわけですが、 `LoadModule alias_module /usr/lib/apache2/modules/mod_alias.so` モジュールの共有ライブラリのパスを直接してしているので、apacheの内部実装的にもモジュール識別子`alias_module`がなんのために必要なのかがよくわかりません。 apacheのドキュメントでも下記のように解説されており ``` この文字列は、モジュールの動的読み込みを行なうときに使用する LoadModule ディレクティブにおいて使用されるモジュールの識別子です。 詳しく書くと、ソースファイル内の module タイプの外部変数の名前です。 ``` なんのためにそれが必要なのかについては説明されていません。 IfModuleでは、モジュール識別子でもファイル名でもどちらでも使用できるようですが、主にファイル名で指定されているように見えます。 何か歴史的な事情があったりするのでしょうか?
回答: Apacheは、基本となる部分(Core)と様々な機能を提供するモジュール群から構成されています。 モジュール一覧 モジュール識別子は、そのモジュールがどんな機能を持つかを示す名前(ラベル)です。 同じ機能を持つモジュール(モジュール識別子は同一)でも、OSやプロセッサの種類が異なる複数のモジュールが存在します。 また、性能を上げるための工夫をしたバージョンや、コードサイズが小さくなるように設計されたバージョンといった実装方法が異なるが機能は同じ(モジュール識別子が同じ)モジュールというのも存在します。 こうした複数のモジュールを、モジュールの機能で指定する場合にはモジュール識別子(例えば、ドキュメントルートと違うディレクトリのファイルをドキュメントルートの下にあるかのように扱える"mod_actions")を使い、特定のファイルを指定する場合にはファイル名を使います。