こんにちは私は過去半年間レールを学び、Herokuにいくつかのアプリをアップしています。だから私にとっては、アプリをワールドワイドウェブにデプロイするのは同じくらい簡単だと思いましたheroku push
。しかし、私はRailsをやっている最初のインターンシップを取得したばかりで、先輩の1人がApacheとNginxについて話していて、アプリはRails +クラウドアプリプラットフォームのみで構成されていると思っていたので、それらがどのように画像に収まるかわかりません。調べましたが、アプリのライフサイクルにどのように、どこで影響するのかまだわかりません。誰かがWebサーバーをいつ/どこで/いつ使用するかを説明できますか?
3 に答える
つまり、Railsアプリがあり、ご存知のように、コントローラー、アクション、ビューなどがあります。
ブラウザのユーザーがHerokuのアプリにアクセスすると、Herokuサーバーを指すURLを入力します。
Herokuサーバーは、URLを入力してRailsアプリケーションに接続するユーザーをリッスンするWebサーバーです。railsアプリケーションはその処理を実行し(ブログ投稿のリストなどを取得します)、サーバーはこの情報をユーザーのブラウザーに送り返します。
あなたはずっとWebサーバーを使用してきましたが、それはあなたから抽象化され、Herokuのおかげで非常にシンプルになりました。
したがって、ライフサイクルは次のようになります。
開発マシンでアプリケーションを構築しているときに、おそらくコマンドに出くわしたことがありますrails server
。これにより、WebサーバーであるWEBrickというプログラムが起動し、ポート3000でリッスンします。を介してアプリにアクセスしますhttp://localhost:3000
。
WEBrickはポート3000でリッスンし、「投稿のリストを表示してください」コマンドなどのユーザーからの要求に応答します。
コードを本番環境にプッシュすると(経験heroku push
上)、コードを本番環境と同等の処理を行うプロバイダーに送信rails server
します。
本番セットアップ(上級開発者が話している)は、rails server
開発マシンのローカルセットアップよりも少し複雑です。
本番環境では、WEBrickの代わりにRailsサーバー(多くの場合、Unicorn、Passengerなど)があります。
多くの本番環境では、Apacheやnginxなどの別のサーバーも使用され、ユーザーがアプリケーションにアクセスするときに接続するサーバーです。
このサーバーは、さまざまなタイプの要求を処理する方法を理解するためのルーターとして存在することがよくあります。たとえば、サーバーに保存されている静的ファイル(css、images、javascriptなど)へのリクエストは、静的アセットをクライアントに送り返すという素晴らしい(そして高速な)ジョブを実行するため、Apacheまたはnginxによって直接処理される場合があります。
「すべてのブログ投稿のリストを取得する」などの他のリクエストは、Railsサーバー(Unicorn、Passengerなど)に渡され、Railsサーバーは必要な作業を実行してApache / nginxに応答を送信し、Railsサーバーはそれをクライアントに送り返します。 。
Herokuはこれらすべてを使いやすいパッケージで提供しますが、Herokuを使用するのではなく、あなたが働いている場所がこれを自分で管理しているように思えます。彼らは独自のWebサーバーをセットアップしheroku push
、サーバーにコードを送信するのと同等の方法を独自に実行し、ユーザーの要求に応答する準備ができていることを確認します。
お役に立てば幸いです。
Webページをインターネットで利用できるようにするには、Webサーバーが必要です。
したがって、すべて静的コンテンツ(すべて.htmlページのみ)であるサイトにはWebサーバーが必要であり、そこでApace、nginxなどが登場します。これらはWebサーバーです。
Railsのようなフレームワークを使用すると、アプリケーションサーバーという追加のコンポーネントが追加されます。これにより、railsフレームワークを使用してページが前処理され、(引き続き)上記のWebサーバーを使用して、最終ページ(もちろん、.html)をブラウザーからエンドユーザーが利用できるようにします。
Passenger Phusionは、Railsを使用して、コードのデプロイを管理および自動化するのに役立つアプリケーションサーバーです。
Herokuはクラウドサービスです。つまり、ハードウェアとソフトウェアを処理するため、舞台裏で何が起こっているかを気にすることなく、アプリケーションをシームレスに公開できます。したがって、あなたがしなければならない唯一のことは、あなたのコードを彼らのGitと出来上がりにプッシュすることです。
一方、Railsは、完全にゼロから構築したシステムにデプロイすることもでき、アプリの開発だけでなく、サーバーのメンテナンスやハードウェアやソフトウェアの選択も担当します。次に、ngixなどのRailsを実行できる複数のアプリケーションサーバーから選択できます。
お役に立てば幸いです。