2009-07-03 6 views
3

Compojure/sinatraアプリケーションを展開する好ましい方法は何ですか?私は複数のサイトをホスト上で実行しているので、ポート80でjetty/mongrelを実行することはできません。同じホストで複数のサイト/アプリケーションを処理するにはどうすればよいですか?Compojure/Sinatraアプリケーションの展開

答えて

7

Apacheなどのポート80で動作するWebサーバーを使用し、適切なアプリケーションサーバーにトラフィックを誘導するためにvirtual hostsを使用します。つまり、基本的には、各アプリケーションサーバー(jetty /雑種など)を別のポートで実行し、各仮想ホスト内では、mod proxyのようなものを使用してトラフィックをアプリケーションサーバーに転送するような構成になります。 lighttpdnginxなど、別のWebサーバーを使用することもできます。 sinatraアプリの場合、理論的にはラックアプリで動作するPhusion Passenger, a.k.a mod rails, a.k.a mod rackを見ることもできますが、これはRailsでしか使用していません。

さらに詳しく調べると、Webサーバーからアプリケーションサーバーにトラフィックを転送するためのさまざまなスキームがあることがわかりますが、この種のことを行うための基本的な仕組みは、常にWebサーバー名前ベースの仮想ホストを使用してトラフィックを適切なアプリケーションに転送するポート80を待ち受けます。

3

私は何年もの間、さまざまなスタンドアロンサーバー(AllegroServeなど)でこの種の作業を行ってきました。私がする最良の方法を見つけた:

  • 実行
  • 実行pound(またはnginxの等)80上の(例えば8080など)が異なる、非特権ポート上の各サーバー、リクエストをマップするように構成各アプリケーションに適用されます。

ポンドは素晴らしく、構成は非常に簡単です(Nginxとは異なります)。 SSLフロントニングとHTTPサニタイズも行いますが、これはアプリケーションの負担となります。

0

乗客を使用してください! http://modrails.com - これは、(非常に)簡単に仮想ホストとしてルビーアプリを実行できるようにするapacheとnginxのプラグインです

関連する問題