人に聞けない痔の悩み、これでスッキリ >>

Apacheの勉強をしているちに、「静的にモジュールを組み込む」「動的にモジュールを組み込む」とはどういうことなんだろう?と思い始めました。

本やサイトで調べてみると「動的にモジュールを組み込むには「mod_so」を静的に組み込む必要がある」と解説してありましたが、この「静的」「動的」とはどのようなことを指すのでしょうか?

解りやすく解説してある本やサイト等を教えていただければ助かります。

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

> そこでひとつ確認しておきたいのですが、


> ./configure --enable-so --enable-mods-shared="most"又は"all"
> で最初に動的にモジュールを一気に入れてしまって、
> 必要に応じてhttpd.confを編集し直すというやり方でも
> 問題ないでしょうか?

問題ないです。ただし、依存性のあるモジュールに注意して設定を行うことに注意を払うようにしてください。
これさえ忘れなければ、それが現在のところ一番簡単な設定方法になっています。

一例をあげれば、mod_limitIPconnは、mod_Statusに依存しています。
    • good
    • 0
この回答へのお礼

再度、回答ありがとうございます。

依存関係を注意しながらこの方法でやっていきたいと思います。

設定が難しそうですがmod_limitIPconはアクセス制御をする時に役立ちそうですね。
いずれチャレンジしてみようと思います。

この度は色々とありがとうございました。

お礼日時:2005/03/30 20:58

「動的」「静的」ということそのものの意味は#1の方のご説明のとおりです



では、apacheの場合どうすれば静的に組み込めるのかというと、configure(コンパイル前の設定コマンドです)時に--enable_module=soとしたら、mod_soが静的に組み込まれます。

すなわち、コンパイル時に組み込むことを「静的に組み込む」と言います。
これに対して、起動時に呼び出すよう設定することを「動的に組み込む」といいます。

apacheでは、mod_soが「動的な」組み込みをサポートしているため、mod_soがなければ「動的な」組み込みはできません。だから、mod_soはコンパイル時に「静的に」組み込む必要があるわけです。

また、apacheにおける動的組み込みと静的組み込みの間での動作の差はほとんどありません。

apacheは、常時動作するデーモンプログラムとして設計されているので、機能が必要になるかどうかに関係なく、httpd.confでLoadModule指定されていると必ず読み込まれます。したがって、メモリの節約にはなりませんし、起動時間も結果としてほぼ同じになってしまいます。

では、どう違うのかというと、動的に組み込んでいると、必要がなくなればhttpd.confを編集して再起動するだけでhttpdをコンパイルしなおさなくても、動作を変更できるという点がもっとも違います。
また、この点が動的組み込みの最大の利点となります。

この回答への補足

回答ありがとうございます

Apacheにおける「静的」「動的」のしくみについてよく理解できました。
今まで静的にモジュールを組み込んでいたせいで新たにモジュールを組み込む時はいつも再コンパイルいていたのでかなり面倒でした。

そこでひとつ確認しておきたいのですが、
./configure --enable-so --enable-mods-shared="most"又は"all"
で最初に動的にモジュールを一気に入れてしまって、必要に応じてhttpd.confを編集し直すというやり方でも問題ないでしょうか?

補足日時:2005/03/29 23:15
    • good
    • 0

ご質問事項へ回答します。



『静的』と『動的』の違いですが、モジュールがメモリ上に展開される
タイミングの違いを表しています。

まず『静的』モジュールついてですが、メインプログラムがメモリに展開される時に
一緒に展開され、メインプログラムが終了するまで展開され続ける方式です。
常にメモリ上に展開されている為、動作速度の向上が望めますが、その分メモリを
消費します。

次に『動的』モジュールですが、普段はメモリ上には展開せず、機能が必要になった場合
にメインプログラムから適宜呼び出し、必要なくなれば切り離す方式です。
メモリの消費を最小限に抑えられますが、呼び込み作業が必要な為、動作速度は
あまり期待出来ません。

如何でしょうか?
上記『静的/動的モジュール』については、Apache固有の機能と言うわけではなく、
プログラミング全般に関わるものですので、以下のサイト等を参考にしてみて下さい。

参考URL:http://docs.sun.com/source/806-4837/Building.html
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

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

お礼日時:2005/03/29 23:14

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qpingでポートの指定

pingでIPアドレスを指定して、通信できるかどうかというのは
よく使いますが、pingでポートを指定して応答するかどうかは調べられるのでしょうか?

よろしくお願いします

Aベストアンサー

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含むICMP)ではできません。

FTPの疎通確認であれば、クライアントからサーバに対するTCP/21通信(FTP-CMD)が可能であること(サーバからクライアントへのTCP/21からの応答を含む)+サーバからクライアントに対するTCP/20通信(FTP-DATA)が可能であること(クライアントからサーバへのTCP/21からの応答を含む)が必要でしょう。

監視ソフトによるものであれば、
・クライアントからサーバへのログイン(TCP/21)
・クライアントからサーバへのlsの結果(TCP/20)
で確認すればよいでしょう。

pingを含むICMPというプロトコルは、OSIの7レイヤで言うところのL2(同一セグメント内通信)とL3(IPルーティングされた通信)の両方にまたがる、ちょっと珍しいプロトコルです。

IPアドレスは指定できますが、別サブネットに属するIPアドレスに到達できればL3通信、できなければゲートウェイと呼ばれる同一サブネットに属する中継装置からの回答を得るという点でL2(MAC通信ではなく、同一セグメント内通信という意味)通信です。

ポート番号はL4で使用されるアドレスですから、L4機能の疎通確認はping(を含む...続きを読む

QIOException ってどういうときに起こるのでしょうか?

IOException ってどういうときに起こるのでしょうか?

http://www.atmarkit.co.jp/fjava/rensai2/javaent12/javaent12.html
を見て勉強しています。

  catch ( IOException e) {
    System.out.println( "キーボードが故障しているのかもしれません" );
  }

と書いてあります。
ハード(キーボード)が故障しているのを Java のプログラムのレベル(ソフトウェア)で感知できるというのがよくわかりません。「

NumberFormatException の方はわかるのですが・・・

Aベストアンサー

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接続だったりするわけですけど、
InputStreamは、その入力元の情報を持っていないので、
データを読み取る際は常に
IOExceptionをキャッチするコードを書かなくてはいけません。
たとえ、絶対にIOエラーが発生しないストリームだとしても。

さらに付け加えるなら、
そもそも「標準入力=キーボード」であるとは限りません。
(一般的にはキーボードであることが多いですが。)
Javaでは、
System.setIn(InputStream)
を呼び出して、標準入力を変えてしまうことができますし、
標準入力を指定してプログラムを実行することができるOSもあります。

追伸1:
例外をキャッチしたときは、
スタックトレースをプリントすることをおすすめします。
catch (IOException e) {
e.printStackTrace();
}

追伸2:
そのプログラムでIOExceptionを発生させる最も簡単な方法は、
readLine()を呼び出す前に
標準入力(System.in)を閉じてしまうことです。
System.in.close();

現実的には、キーボードからの入力でIOExceptionが発生することは、
ほとんどあり得ないと思います。
そもそも、キーボードが故障していたとしても、
IOExceptionは投げられないでしょう。
「キーボードが故障しているのかもしれません」というのは、
その記事の著者が冗談で書いたのだと思います。

ではなぜ、try-catchを書かなくてはいけないのか?
InputStreamやBufferedReaderは、
データ入力を抽象化したものだからです。
実際の入力元はキーボードだったり、ファイルだったり、
ネットワーク接...続きを読む

Qソースからmakeした場合の削除方法

FreeBSDでApacheをソースからmake→make installしたのですが、
一度インストールしたものを削除することは可能なのでしょうか。

make uninstallやmake deinstallのようなコマンドは受け付けて
くれないので困っています。

Aベストアンサー

--prefix や --enable-layout オプションを指定していないのであれば、デフォルトで /usr/local/apache または /usr/local/apache2 にインストールされるので、そのディレクトリごと削除してしまえばよいでしょう。

それ以外の他のファイルが存在するところにインストールしてしまった場合は、手で1つずつ探して削除するしかありません。

基本的に、ソースコードからインストールしたものは、既存ファイルに対する上書きチェックやアンインストールといった方法が提供されていないことが多いです。

Qsedの置換文字に変数を使用したいのですが・・・

あるファイルの特定の文字を変換し、上書きをする処理を行いたいのですが、sedの置換文字に変数が渡せなくて困っています。

例:
X="a"
Y="b"
echo test.txt | sed 's/${X}/${Y/g}' >test.txt

sedでは置換文字に${X}といった変数を使用することはできないのでしょうか?

Aベストアンサー

' ・・・' で囲まれた中の$はそのままドルマークです。変数展開をするなら、'・・・'で囲んではいけません。

何も囲まないか、"・・・"で囲むかです。

Q「httpステータス404」というエラーが出ます。

「httpステータス404」というエラーが出ます。

java初心者です、宜しくお願い致します。
EclipseでServletを書いてやりましたが、以下のようなエラーが出ます、
原因はなんでしょうか、宜しくお願い致します。
「httpステータス404-/Servlet%E7%B7%B4%E7%BF%92/ ServOutput」

Aベストアンサー

Not Found
という意味です。
そのファイルが無い。あるいはリンクが間違っています。
詳しくは参考URLをみてください。

参考URL:http://ja.wikipedia.org/wiki/HTTP_404

Q起動しているサービスを確認するコマンド

初歩的な質問で恐縮ですが、ご教示いただけますと幸いです。

起動しているサービスを確認するために以下の2つのコマンドを打ってみるのですが、結果(出て来るサービス名)が違います。
このコマンドの違いについてご教示いただけますでしょうか。

(1)service --status-all
(2)chkconfig --list

Aベストアンサー

(1)service --status-all

サービスの現在のステータスを調べるコマンド

(2)chkconfig --list

OSのブート時に自動起動するサービスを調べるコマンド

違いが出るのは、
・ブート後に手動あるいは他のコマンドから起動したサービス
・ブート後に手動あるいは他のコマンドから、あるいはエラーで停止したサービス
・ブート後に実行はされるがすぐに停止して常駐しないサービス (ntpdate とか)

あるいは、(1)ではサービス名が表示されない物もあるので、どのサービスがどんなステータス出力をするのか知っておく必要もありますね。(service network statusとか)

Qmakeコマンドのエラーについて(

UNIX(Linux)系のOSやC言語には不慣れなのですが、よろしくお願いします。

普段はWindows7(Home Ed.)を利用しているのですが、
いくつかのlinux系のソフトを利用する際にcygwinも利用しています。


==========================================================
cygwinにソフトウェアをインストールしようとする際に、
ときどき遭遇するエラーなのですが

仮にsoftware.tar.gzというソースファイルからインストールしようとして、

> gunzip -c software.tar.gz | tar xvf -
> cd software
> ./configure
> make
.....
make: *** [all-recursive] error

というエラーが生じて、makeが通らない時があります。
=========================================================


これまで何度か、どういうエラーなのか調べようとする度に挫折し、
何回かやり直している内に、たまたまmakeがすんなり通って
インストールできてしまったりしていたので、
なんとなくうやむやにしていました。

そもそも、この"all-recursive"に全くピンとこないのですが、
これはどういった場合に生じるエラーを示しているのでしょうか?
recursive(再帰的な)だから、関数かなにかの呼び出しに失敗している、
とかそういうことなのでしょうか?


エラーの内容はケースバイケースだし、
漠然とした質問になって申し訳ないのですが、
ちょっとしたアドバイスでもいいので、ご回答をお願いします。

UNIX(Linux)系のOSやC言語には不慣れなのですが、よろしくお願いします。

普段はWindows7(Home Ed.)を利用しているのですが、
いくつかのlinux系のソフトを利用する際にcygwinも利用しています。


==========================================================
cygwinにソフトウェアをインストールしようとする際に、
ときどき遭遇するエラーなのですが

仮にsoftware.tar.gzというソースファイルからインストールしようとして、

> gunzip -c software.tar.gz | tar xvf -
> cd software
> ./configure
> make
...続きを読む

Aベストアンサー

お腹痛いのに、一生懸命違うところを診察しているようなものですかね。

make[2]: *** [tvsetf.o] Error 1
この行より上全部じゃないですか?
WARNINGとかも出てますしね。

仰るとおりケースバイケースではありますが、例えば自分で作ったプログラムでの話ならばプログラムのミスが考えられますが、どこかの出来合いのフリーウェアをmakeしてエラーで落ちる場合は、環境が整っていない場合があります。(○○がインストールされていないとか…)

その辺は全てconfigureやmake時に出てくるメッセージをちゃんと見ることです。

なぜ最後に出てくるall-recursiveだけに注目してるのか知りませんが、見なくてもいいものをずっと見ていても問題は解決しません。

Q静的・動的の意味

よく静的解析、動的解析という言葉を耳にするのですが
いまいちイメージがつかめません。

そもそも力学的に「静的」、「動的」とはどういう意味を持つのでしょうか。

よろしくお願いします。

Aベストアンサー

検索エンジンで調べてみますと、「動的解析」や「静的解析」という用語は、それが使われる分野によって意味が違っています。ソフトウェアの分野では、ソフトウェアを動作させずに調べることを静的解析、動作させて調べることを動的解析と言うようです。また、建築の分野では、建築物の風力や重量などに対する耐性を調べることを静的解析、地震のときの揺れなどに対する耐性を調べることを動的解析と言うようです。

力学は、静力学と動力学に分けることができます。静力学では、”力の釣り合い”を、動力学では、”運動”を扱います。

Q前株 後ろ株の違い

「株式会社××」という表記を前株、
「××株式会社」という表記を後ろ株、
と言いますよね。

法的に根拠はないらしいのですが、
営業の人がよく「前株ですか?後ろ株ですか?」
というやり取りを商談でしていたり、
「就職の場合、前株の方が良い」などと(噂ですが)
聞いたりします。

やはり何か違いがあるのでしょうか?

Aベストアンサー

1商法・有限会社法に「株式会社・合資会社・合名会社・有限会社」といった法人種別を必ず登記上使用しなければならないと定められていますが、社名のどこにつけるという定めはありません。
2従って、法人設立時や社名変更時に経営者の「語感」で決めるようです。勿論時代の流れもあるようで、戦前には「後株」に比して「前株」会社は少数派でした。
3言語心理学から「ぼーっと聞いている人に、顔を見せることなく急に話し掛けた場合、最初の言葉の頭部は「反応開始の刺激信号」になるだけで、大脳中の言語中枢の記憶との照合までには至らないことが多い」「また、これが聴き慣れない言葉だと、意味は勿論のこと語音の弁別さえもできない。つまり初めの部分を聞き漏らしてしまう」いきなり言われても最初の部分は聞いてないということですね。だから誰でも知っている「株式会社」という言葉を先に出して「反応開始の刺激信号」として利用できるという見解もあるようです。
4上場会社の正式名称を並べてみると1部上場に比してマザーズ等新規上場会社には前株、カタカナが多いがそうでない場合もある。「ご勝手に!どうぞ」状態です。
5なお、職務上関連会社を十数社設立登記しましたが、オーナーの鶴の一声で全て「前」です。

1商法・有限会社法に「株式会社・合資会社・合名会社・有限会社」といった法人種別を必ず登記上使用しなければならないと定められていますが、社名のどこにつけるという定めはありません。
2従って、法人設立時や社名変更時に経営者の「語感」で決めるようです。勿論時代の流れもあるようで、戦前には「後株」に比して「前株」会社は少数派でした。
3言語心理学から「ぼーっと聞いている人に、顔を見せることなく急に話し掛けた場合、最初の言葉の頭部は「反応開始の刺激信号」になるだけで、大脳中の言語中枢の...続きを読む

Qホームページでファイルをダウンロードさせる

お世話になります。
会社のホームページを制作中です。
マニュアルなどをアップしておき、ユーザーにダウンロードしてもらうページを作ろうと思っています。
<ベクターのような>
参考になる情報ありましたら教えてください。
宜しくお願いいたします。

Aベストアンサー

ダウンロードについて、
参考URLのページに分かりやすく書いてあるようです。
例もあるのでぜひ参考にしてください。

参考URL:http://www.tohoho-web.com/wwwxx013.htm


人気Q&Aランキング