compojure/sinatra アプリケーションを展開するための推奨される方法は何ですか? ホスト上で複数のサイトを実行しているため、ポート 80 で jetty/mongrel を実行できません。同じホストで実行されている複数のサイト/アプリケーションをどのように処理すればよいですか?
3 に答える
ポート80で実行されるApacheなどのWebサーバーを使用し、仮想ホストを使用してトラフィックを適切なアプリサーバーに転送します。したがって、基本的には、各アプリケーションサーバー(jetty / mongrelなど)を異なるポートで実行し、各仮想ホストで、modプロキシなどを使用してトラフィックをアプリサーバーに転送するための異なる構成を使用します。lighttpdやnginxなどの別のWebサーバーを使用できます。sinatraアプリについては、 Phusion Passenger、別名mod rails、別名mod Rackも見ることができます。これは、Railsでしか使用していませんが、理論的にはどのラックアプリでも機能します。
もう少し調べてみると、Webサーバーからアプリサーバーにトラフィックを転送するためのさまざまなスキームがあることがわかりますが、この種のことを行うための基本的なメカニズムは、常に、ポートでリッスンするWebサーバーを持つことになります。名前ベースの仮想ホストを使用してトラフィックを適切なアプリに転送する80。
私は何年もの間、さまざまなスタンドアロン サーバー (たとえば、AllegroServe) でこの種のことを行ってきました。最善のアプローチは次のとおりです。
- 各サーバーを異なる非特権ポート (8080 など) で実行します。
pound
各アプリケーションにリクエストをマップするように構成された 80 で (または Nginx など) を実行します。
Pound は素晴らしく、構成は非常にシンプルになります (Nginx とは異なります)。また、SSL フロントと HTTP サニタイズも行います。これにより、アプリケーションの負担が軽減されます。
乗客を使用してください!http://modrails.com - Ruby アプリを仮想ホストとして (非常に) 簡単に実行できるようにする apache と nginx のプラグインです。