質問: apache2 静的・動的モジュールとは? apacheの勉強をしているちに、「静的にモジュールを組み込む」「動的にモジュールを組み込む」とはどういうことなんだろう?と思い始めました。 本やサイトで調べてみると「動的にモジュールを組み込むには「mod_so」を静的に組み込む必要がある」と解説してありましたが、この「静的」「動的」とはどのようなことを指すのでしょうか? 解りやすく解説してある本やサイト等を教えていただければ助かります。 よろしくお願いします。
回答: 「動的」「静的」ということそのものの意味は#1の方のご説明のとおりです では、apacheの場合どうすれば静的に組み込めるのかというと、configure(コンパイル前の設定コマンドです)時に--enable_module=soとしたら、mod_soが静的に組み込まれます。 すなわち、コンパイル時に組み込むことを「静的に組み込む」と言います。 これに対して、起動時に呼び出すよう設定することを「動的に組み込む」といいます。 apacheでは、mod_soが「動的な」組み込みをサポートしているため、mod_soがなければ「動的な」組み込みはできません。だから、mod_soはコンパイル時に「静的に」組み込む必要があるわけです。 また、apacheにおける動的組み込みと静的組み込みの間での動作の差はほとんどありません。 apacheは、常時動作するデーモンプログラムとして設計されているので、機能が必要になるかどうかに関係なく、httpd.confでloadmodule指定されていると必ず読み込まれます。したがって、メモリの節約にはなりませんし、起動時間も結果としてほぼ同じになってしまいます。 では、どう違うのかというと、動的に組み込んでいると、必要がなくなればhttpd.confを編集して再起動するだけでhttpdをコンパイルしなおさなくても、動作を変更できるという点がもっとも違います。 また、この点が動的組み込みの最大の利点となります。