- ベストアンサー
webサーバーHTTPDの役割はローカルで必要なのか。
pearlの勉強をしています。 最初にローカルでテストするため、ローカルサーバーを構築するわけですが、 そのためにwebサーバーを構築する必要がある。というのが基本のようです。 それでこのwebサーバーというのはホームページやpearlのスクリプトなどをアップロードするために必要なようです。 しかし、ローカルでのテストなのですから、インターネット上のサーバーにまだアップロードするわけではありまあせん。なのに、なぜローカルのテストをするのにたとえばHTTPDなどのwebサーバーが必要なのか。 また、pearlスクリプトを翻訳するpearlforwin32などがありますが、 これは、翻訳するだけで実際の処理はwindowsマシン(つまりPCのことだと推定しているのですが)が行うと考えて間違いはないでしょうか。 わかりやすく、説明できる方はおられませんでしょうか。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
Perl言語の勉強だけであれば、webサーバーは必要なく、PerlForWin32さえあれば可能です。 しかし、恐らく、PerlをCGIとしてHTMLの入出力を行うようなPerlプログラムの勉強が狙いなのだと推察します。その場合、ブラウザでボタンを押され、結果としてHTMLを出力させるには、HTTPプロトコルを解釈してデータを扱う必要があります。このHTTPプロトコルを扱うにはWebサーバが必要なのです。よって、Webサーバがあった方がテストしやすいのです。 もちろん、Webサーバ無しでもPerlのテストは可能ですが、Webサーバがあった方がエラーを把握しやすいでしょう。それがWebサーバを導入する理由です。 >翻訳するだけで実際の処理はwindowsマシン(つまりPCのことだと推定しているのですが)が行うと考えて間違いはないでしょうか。 どちらが実行しているかと問われるとどちらもです。というのが回答になります。PerlプログラムをPerlForWin32が読み取ってソフトウェアとして動作していますが、電気的な信号の送受信や画面表示などのハードウェア的な面についてはPC本体が行っています。もちろん、PerlForWin32はOSやCPUがないと動きませんので、windowsマシンが行っていると言って差し支えないと思います。
その他の回答 (3)
- dora7075
- ベストアンサー率39% (103/261)
No.2で回答した者です。 >当然にブラウザにhttpのデータをわたす「人」が必要である。すなわちこのときに、webサーバーの出番があるのだと解釈してよろしいでしょうか。 その通りです。ブラウザとサーバ間はHTTPと呼ばれるプロトコルで通信されますが、サーバ側ではWebサーバがHTTPの送受信を担当する「人」だと思ってください。すなわち、httpデータの受け渡しにはWebサーバが必要なのです。
お礼
ありがとうございます。 とてもわかりやすい説明で理解が進みました。
- bardfish
- ベストアンサー率28% (5029/17766)
>それでこのwebサーバーというのはホームページやpearlのスクリプトなどをアップロードするために必要なようです。 チョット違います。 スクリプトなどをアップロードするのはHTTPではなくFTPです。もちろんHTTPを利用したアップロードも可能ですが、HTTPではパーミッションの設定が基本的にできません。その為HTTPでCGIをアップロードできるレンタルサーバーなどではパーミッションの管理画面が別にあります。 さらにPerlスクリプトをローカルで実行する場合とHTTPで実行する場合とではパラメーターの渡し方、取り出し方が異なるし、参照できる環境変数に差があります。 詳しくは↓ここを見てください。 http://www.tohoho-web.com/wwwcgi.htm >これは、翻訳するだけで実際の処理はwindowsマシン(つまりPCのことだと推定しているのですが)が行うと考えて間違いはないでしょうか。 PerlスクリプトはPerlインタープリタがソースプログラムの解析/実行を行っています。そのプラットフォームがWindowsなのかLinuxなのかというだけ。 Perlを使用してCGIを作るのならまずはローカルで実行してみて文法エラーなど基本的なミスがないか確認します。HTMLベースのCGIを作るのならスクリプトがはき出すHTMLソースが正しいかどうかはブラウザを使用しないと確認が難しくなります。その為にもローカルでHTTPDを立てて動作検証をする必要があります。これを怠った場合、レンタルサーバーでいきなり実行したのでは最悪他の利用者に迷惑をかける場合もあり得ます。 ローカルの単体テストでは出なかったエラーでもHTTPD下で実行すると発生するエラーもあります。 その場合は何行目でエラーが出たか確認する術が基本的にないのでHTTPDが出力するエラーログを参照する事になります。Apachならerror.logにCGIの何行目でどのようなエラーが発生したかが記録として残ります。 先に挙げたリンク先を良く読めばある程度わかると思いますけど…
補足
ありがとうございます。 HTMLベースのCGIを作るときに、 ローカルでの実験段階で、 やはりHTTPDが活躍するわけですね。 それにしても、参考urlを見るといろいろヤバそうです。 とりあえず、今後も勉強を続けてみます。
- precog
- ベストアンサー率22% (966/4314)
サーバーサイドスクリプティングなら、サーバーが動いてないと実行できませんね。
補足
ありがとうございます。 サーバーサイドスクリプティング、今のところ 自分にとって専門用語です。 けれど、今後の課題とします。
補足
ありがとうございます。 pearlCGIというものを想定した場合、ローカルのテストをするにしましても、つまり、自分の作ったスクリプトが動作するかをローカルで試すときに スクリプトがたとえ自分のパソコンの中にあっても、ブラウザの検索ボックスからhttp://というようにURL(とローカルの場合でもこういう呼び方でいいのか?)を入力してから、例えばメールフォームの画面などを呼び出したりします。 このときには、当然にブラウザにhttpのデータをわたす「人」が必要である。すなわちこのときに、webサーバーの出番があるのだと解釈してよろしいでしょうか。