2013-01-06 16 views
9

こんにちは私は過去半年のレールを学んでいて、ヘロクでいくつかのアプリを持っています。だから私のためには、ワールドワイドウェブ上にアプリをデプロイするのはheroku pushと同じくらい簡単だと思った。しかし、最初のインターンシップでRailsをやっただけで、先輩の一人がApacheとNginxについて話しています。アプリケーションがRails +クラウドアプリケーションプラットフォームのみで構成されていると思っていたからです。私はそれを見ているが、私はまだ、どのように、そしてそれが私のアプリのライフサイクルに影響を与えるのかを知りません。誰かが何/どこでWebサーバーを使用しているのか説明できますか?Rails:Webサーバー(Apache/nginx/passenger)の使用方法は?

答えて

16

あなたはRailsアプリケーションを持っています。コントローラーとアクションを持っているとわかっていますが、何がないのですか?

ブラウザのユーザーがHerokuのアプリに行くと、Herokuサーバーを指すURLが入力されます。

Herokuサーバは、URLを入力してRailsアプリケーションに接続するユーザを聞くWebサーバです。 railsアプリケーションはそのことを行い(ブログ投稿のリストなどを取得します)、サーバーはこの情報をユーザーのブラウザに送り返します。

あなたはいつもウェブサーバーを使い続けていました。それはあなたから離れて抽象化されていて、ヘロクのおかげで簡単にできました。

だから、ライフサイクルは多少このようなものです:

あなたはおそらくコマンドrails server渡って来ている開発マシン上でアプリケーションを構築してきたけれども。これはWebサーバーであるWEBrickと呼ばれるプログラムを起動し、ポート3000でリッスンします。あなたはhttp://localhost:3000経由でアプリケーションに行きます。

WEBrickはポート3000で待機し、「hey give posts list」コマンドなどのユーザーからの要求に応答します。

コードを実稼働環境(heroku push経由)にプッシュすると、rails server相当の量産を担当するプロバイダにコードが送信されます。

開発者の上級開発者が話している生産セットアップは、開発マシンのローカルrails serverセットアップより少し複雑です。

WEBrickの代わりにあなたのRailsサーバ(Unicorn、Passengerのようなものが多い)があります。

多くのプロダクション設定では、Apacheやnginxなどの別のサーバーも使用され、アプリケーションに接続するときにユーザーが接続するサーバーです。

このサーバーは、さまざまな種類の要求をどのように処理するかを検討するために、しばしばルータの一部として存在します。たとえば、静的ファイルをクライアントに送り返すという素晴らしい(そして速い)仕事があるので、サーバー上でストートされた静的ファイル(css、画像、javascriptなど)へのリクエストはApacheまたはnginxによって直接処理されるかもしれません。

Railsサーバー(Unicorn、Passengerなど)に「すべてのブログ投稿のリストを取得」などのリクエストが送信され、必要な作業を行い、Apache/nginxに送信しますクライアントに返します。

Herokuは使いやすい使いやすいパッケージでこれをすべて行いますが、Herokuを使用するのではなく、自分で作業する場所のように思えます。彼らはウェブサーバーを自分で設定しており、heroku pushのコードをサーバーに送信し、ユーザーの要求に対応する準備ができていることを確認します。

希望に役立ちます!

+0

長らく説明をいただきありがとうございます! – Edmund

+0

ありがとうございます。初めて私はPassenger/Unicornについて、「サーバー作業のレール側」とNginx/Apacheがファイルの送信を行っていることを読んだ。今までは、NginxがPassengerと同じかどうか、なぜProductionに2つの異なるサーバーコンポーネントが必要なのか混乱しました。 –

1

Herokuはクラウドサービスであり、ハードウェアとソフトウェアを管理しているため、シーンの背景に何が起こっているか心配することなく、アプリケーションをシームレスに公開できます。あなたがしなければならないのは、あなたのコードをGitとvoilaにプッシュすることだけです。

一方、Railsは完全にゼロから構築されたシステムにデプロイすることもできます。また、アプリケーションの開発だけでなく、サーバーのメンテナンスやハードウェアの選択、および/またはソフトウェア。次に、ngixなどのレールを実行できる複数のアプリケーションサーバーを選択できます。

希望に役立ちます。

3

Webページには、インターネット上で利用できるようにするWebサーバーが必要です。

すべての静的コンテンツ(すべての.htmlページ)はWebサーバーを必要とし、Apace、nginxなどがそこに入ります。これらはWebサーバーです。

レールのようなフレームワークを使用すると、アプリケーションサーバーの追加コンポーネントが追加されます。これは、レールフレームワークを使用してページを前処理し、(まだ)上記のWebサーバーを使用して最終ページ(もちろん.htmlです)をエンドユーザーがブラウザで利用できるようにします。

Passenger Phusionは、レールを使用してコードの展開を管理および自動化するアプリケーションサーバーです。

関連する問題