• ベストアンサー

Apache2 静的・動的モジュールとは?

Apacheの勉強をしているちに、「静的にモジュールを組み込む」「動的にモジュールを組み込む」とはどういうことなんだろう?と思い始めました。 本やサイトで調べてみると「動的にモジュールを組み込むには「mod_so」を静的に組み込む必要がある」と解説してありましたが、この「静的」「動的」とはどのようなことを指すのでしょうか? 解りやすく解説してある本やサイト等を教えていただければ助かります。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • rentahero
  • ベストアンサー率53% (182/342)
回答No.3

> そこでひとつ確認しておきたいのですが、 > ./configure --enable-so --enable-mods-shared="most"又は"all" > で最初に動的にモジュールを一気に入れてしまって、 > 必要に応じてhttpd.confを編集し直すというやり方でも > 問題ないでしょうか? 問題ないです。ただし、依存性のあるモジュールに注意して設定を行うことに注意を払うようにしてください。 これさえ忘れなければ、それが現在のところ一番簡単な設定方法になっています。 一例をあげれば、mod_limitIPconnは、mod_Statusに依存しています。

mega-aki
質問者

お礼

再度、回答ありがとうございます。 依存関係を注意しながらこの方法でやっていきたいと思います。 設定が難しそうですがmod_limitIPconはアクセス制御をする時に役立ちそうですね。 いずれチャレンジしてみようと思います。 この度は色々とありがとうございました。

その他の回答 (2)

  • rentahero
  • ベストアンサー率53% (182/342)
回答No.2

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

mega-aki
質問者

補足

回答ありがとうございます Apacheにおける「静的」「動的」のしくみについてよく理解できました。 今まで静的にモジュールを組み込んでいたせいで新たにモジュールを組み込む時はいつも再コンパイルいていたのでかなり面倒でした。 そこでひとつ確認しておきたいのですが、 ./configure --enable-so --enable-mods-shared="most"又は"all" で最初に動的にモジュールを一気に入れてしまって、必要に応じてhttpd.confを編集し直すというやり方でも問題ないでしょうか?

  • unimentai
  • ベストアンサー率70% (34/48)
回答No.1

ご質問事項へ回答します。 『静的』と『動的』の違いですが、モジュールがメモリ上に展開される タイミングの違いを表しています。 まず『静的』モジュールついてですが、メインプログラムがメモリに展開される時に 一緒に展開され、メインプログラムが終了するまで展開され続ける方式です。 常にメモリ上に展開されている為、動作速度の向上が望めますが、その分メモリを 消費します。 次に『動的』モジュールですが、普段はメモリ上には展開せず、機能が必要になった場合 にメインプログラムから適宜呼び出し、必要なくなれば切り離す方式です。 メモリの消費を最小限に抑えられますが、呼び込み作業が必要な為、動作速度は あまり期待出来ません。 如何でしょうか? 上記『静的/動的モジュール』については、Apache固有の機能と言うわけではなく、 プログラミング全般に関わるものですので、以下のサイト等を参考にしてみて下さい。

参考URL:
http://docs.sun.com/source/806-4837/Building.html
mega-aki
質問者

お礼

回答ありがとうございます。 「静的」「動的」の違いよく解りました。 Apacheだけではなくプログラミング全般に言えることだったのですね。 紹介していただいたサイトもこれからの勉強にも大いに参考になりそうです。 ありがとうございました。