16

すぐに、最初の Ruby on Rails アプリケーションを実稼働環境にデプロイする計画を立てており、RoR プロバイダーに期待されるすべての管理対象サーバーと Capistrano の利点を備えた Web ホストを選択しました。

このプロバイダーは、Mongrel、Thin、Passenger、および FastCGI Web サーバーを許可しており、非常に柔軟に見えますが、正直なところ、それらの違いはわかりません。私はそれらをいくつか調べましたが、機能と最大同時リクエストについて話し始めると、すべてが少し大きくなります-そして、このデータは公開者によって異なるようです.

Passenger を (表面的には) 見てきましたが、これは私には非常に魅力的に思えますが、Passenger は実際の Web サーバーではなく、Apache または nginx 上のレイヤーのようであり、生成された管理されているという印象を受けました。アプリケーションのインスタンス (Mongrel クラスターなど)。

私が賢明に選択できるように、誰でも素人の言葉の違いを正してください.

4

4 に答える 4

35

簡潔な答え

Apache/Nginx + Passenger を使用します。Passengerは高速で信頼性が高く、構成と展開が簡単です。Passenger は、 Shopifyを含む多数の大きな Rails アプリケーションで採用されています。

代替テキスト
(出典: modrails.com )

長い答え

CGI と FastCGI は忘れてください。当初は他に選択肢がなかったため、Rails を実行する唯一の方法は CGI またはより高速なブラウザー FastCGI を使用することでした。今日では、Rails を CGI で実行する人はほとんどいません。Rails の最新バージョンでは、.cgi および .fcgi ランナーが提供されなくなりました。

Mongrel は広く採用されているソリューションであり、CGI および FCGI の最良の代替品です。多くのサイトはまだ Mongrel と Mongrel クラスターを使用していますが、Mongrel プロジェクトはほぼ終了しており、多くのプロジェクトは既に他のソリューション (主に Passenger) に移行しています。また、Mongrel ベースのアーキテクチャは、フロントエンド プロキシ (シン、ngnix) と複数の Mongrel インスタンスで構成されるバックエンド アーキテクチャが必要なため、構成が非常に困難です。

パッセンジャーは発売以来、広く注目を集めています。多くのプロジェクトが Mongrel から Passenger に切り替えましたが、それには簡単な展開、保守性、パフォーマンスなど (ただしこれらに限定されません) が含まれます。さらに、Passenger は Apache と Ngnix の両方で利用できるようになりました。

Passenger を使用する最も簡単な方法は、Apache + Passenger 構成です。1 つの Apache インストールと複数の Passenger プロセス。

より優れたパフォーマンスとスケーラビリティが必要な場合は、Ngnix をフロントエンド プロキシとして使用し、すべての Rails リクエストを複数のバックエンド サーバーに転送できます。それぞれが Apache + Passenger で構成されています。ここでは技術的な詳細については触れません。このソリューションは、高レベルのトラフィックを伴う Rails プロジェクトで使用することを目的としています。

さらに複雑なソリューションには、http プロキシやサーバーなど、さまざまなレベルの組み合わせが含まれます。GitHubHerokuから内部の詳細を読むと、私が話していることを理解できます。

現時点では、ほとんどの Rails プロジェクトにとって Passenger が最良の答えです。

于 2009-11-13T12:51:24.743 に答える
9

Mongrel と Thin は単一の ruby​​ プロセス サーバーであり、いくつかのタイプのプロキシ (Apache や Nginx など) の背後でクラスターとして複数を実行します。プロキシは、リクエストする Mongrel または Thin サービスのインスタンスを管理します。

Passenger は、アプリケーション生成プロセスを作成する Apache または Nginx 間のインターフェースを作成し、プロセスをフォークして、着信要求が入ってくるとサーバーに処理します。これらのプロセスが存続する期間、存在できる数については、多くの構成オプションがあります。彼らが死ぬ前にどれだけのリクエストに応えるか。これは、トラフィックの多いアプリケーションをスケールアップして処理する最も一般的な方法ですが、欠点がないわけではありません。これは、*nix オペレーティング システム (linux、mac os x など) でのみ実行できます。また、これらのプロセスはオンデマンドでスピンアップするため、サイトにしばらく誰もアクセスしないと、プロセスが終了し、次のリクエストで再起動するまでに時間がかかります。Mongrel と Thin では、プロセスは常に実行されています。ただし、プロセスが新しく新鮮であることは、メモリ使用量などにとって良いこともあります。

比較的トラフィ​​ックの少ないサイトになる場合、Mongrel または Thin は、アプリケーションを展開するためのシンプルで管理しやすい方法を提供します。Passenger のようなスマートなキューイングとプロセス管理が必要なトラフィックの多いサイトでは、これは非常に優れたソリューションです。

fastcgi に関しては、最後のオプションとして使用することをお勧めします。

于 2009-11-13T12:57:13.930 に答える
1

パッセンジャーですぐにパフォーマンスを向上させるには、ruby エンタープライズ エディションを使用することをお勧めします。

于 2009-11-13T18:43:46.963 に答える
1

私は Passenger + nginx を使用しています。それは本当にうまく機能します。

于 2009-11-13T15:15:21.497 に答える