ストーリーを次のように理解するのに役立ちます。
昔、ウェブが新しくなったときは、静的なページしかありませんでし.htmlた。そのため、Web サーバー ソフトウェアはファイルを効率的に読み取り、ファイルの内容をリクエスター (ブラウザー) に送信します。
次に、動的 Web が登場しました。ここでは、リクエストに応じて、ページのコンテンツをオンザフライで動的に生成する必要がありました。これは、サーバー上で実行されているプログラムが必要であり、何が要求され、何が応答されるべきかを理解する必要があったことを意味します。その結果誕生したのがCGI (Common Gateway Interface). ファイルを読み取っ.htmlてその内容をクライアントに送信する代わりに、サーバー上でプログラムを実行して、リクエスタに送信できるCGIファイルを吐き出します。htmlこれらの CGI スクリプトは、さまざまなプログラミング言語で記述できます。
CGI スクリプトの複雑さが増すにつれて、すべての一般的な (および機械的な) ロジックを抽象化する特殊なヘルパー アプリケーションが必要になりました。これにより、ビジネス ロジックの記述が簡素化されます。これらの特殊なヘルパーは、一般にapplication serversまたはと呼ばれcontainersます。
これらのコンテナーは、Web サーバーを単純かつ無駄のない状態に保つのにも役立ちます。これは、CGI スクリプトの実行の複雑さ (スクリプトがどのプログラミング言語で記述されているかに関係なく) が Web サーバーから委任されるようになったためです。Web サーバーが知る必要があるのは、リクエスト URL が で終わる場合はリクエスト.phpを に委任するFASTCGIか、URI が で始まる場合は に委任する必要がある/javaapp/ということだけです。これらのヘルパー アプリケーションをまたはtomcatと呼びましょう。APP SERVERSContainer
Passenger は、RACK アプリケーションを実行するように設計されたコンテナーの 1 つです。
ラックとは:Rack CGI が Web サーバーが外部プログラムを実行するための標準化されたインターフェースであるのと同様に、コンテナーがアプリケーション (Rails アプリケーションなど) をロードするための標準化されたインターフェースであると言えます。
Rack は、アプリケーション フレームワーク (rails、merb、sinatra など) の標準インターフェイスを定義します。アプリケーション フレームワークがラック インターフェイスに準拠している場合、 はcontainerそれをロードして実行する方法を知っています。
ノート:
概念を非常に単純化しようとしました。これは、完全な説明にはほど遠いものです。これが独学を始めるきっかけになれば幸いです。