2013-11-26 15 views
16

まず、私がWindowsユーザーであり、Web世界では初めてのことを明らかにしてください。過去数ヶ月間、私はPythonとDjangoの両方を学んできました。それは私にとって素晴らしい経験でした。今私は何とかプロダクションサーバーに導入したい小さなプロジェクトを作成しました。 djangoには開発サーバが組み込まれているので、私にとって問題はありませんでした。しかし、今私はそれを最適なオプションとしてNginx + uWSGIまたはNginx + Gunicornを見つけ出し、見つけたプロダクションサーバーにそれを配備する必要があります。そして、uWSGIとGunicordはWindowsと互換性がないので、私はUbuntuや他のUnixシステムに適応しなければならないと思います。実稼働サーバーにdjangoをデプロイ

だから私の質問は次のとおりです。私は2つのサーバーを必要としない理由

  1. 私は上記の1で動作する必要がありますようただ、明確にするために、私に説明してください?
  2. 私はUbuntu環境に適応する必要がある場合、私はUbuntuシェルスクリプト、SSHなどを学ばなければならないのですか?あるいは、ホスティングプロバイダが私を助けるでしょうか?
  3. 私は上記に関係する他に何が必要なのかを知ってください。

ご質問ありがとうございましたら、ご容赦ください。肯定的な応答のために願っています。ありがとうございました!

+0

Nginx + uWSGI + apache2を1台のサーバに設定して、一緒に動作するように設定しても、Nginxとgunicornはほとんど同じものです。そのうちの。私はubuntuを使用していますが、それはOKです。SSHとubuntuを統合するには、大きなことを学ばないでください。 – drabo2005

+0

@ drabo2005私は2つの別々のマシンではなく、2つのサーバプロセスとして質問を解釈しました。私はnginx +に何か他のものを提供するために2つの別々のマシンを使う必要がないことに同意します。私は、nginxとgunicornが同じものか、同じクラスのソフトウェアであっても同意しない。 nginxはリバースプロキシであり、静的サーバーであり、gunicornは専用のwsgiアプリケーションWebサーバーです。 –

+0

ありがとうございます。 –

答えて

14
  1. 典型的な構成は、前のプロキシサーバが遅いクライアントをバッファリングすることができるように(同じ実際のハードウェアまたは仮想サーバ上で同時に実行することができる)は、2つのサーバー・プロセスを含みます。たとえば、低速のクライアントは要求を出してnginxに接続します。 Nginxは要求をGunicornに渡し、Gunicornは応答します。 Nginxは直ちにGunicornリソースを解放し、Gunicornレスポンスをすぐに消費します。その時点で、遅いクライアントは、サーバーリソースの多くを縛ることなく、Nginxからの応答を消費したいと思うほどの時間を取ることができます。 2サーバープロセスモデルの代わりに、Gunicornで非同期ワーカーを使用し、Gunicorn自体を前面に置くか、またはWaitressのような非同期同期コンボを使用することができます。 Nginxの前面には、すぐに使えるスタティックスサーバとして倍増するという利点があります。

    「低速クライアント」は、接続が失われ、タイムアウト中の要求までTCPソケットがハングアップしたままの携帯電話、ちょうど遅い携帯電話。すべてのタイプの信頼できない接続。意図的にサーバーリソースを使用しようとしている敵対的なサービス拒否クライアント。何らかの理由でしゃっくりや誤動作を起こしている古い接続があることがあります。だから、これはほぼすべてのサイトに影響を与える問題です。

  2. あなたはシェルスクリプト自体は必要ありませんが、Ubuntuに慣れるには時間がかかります。スクリプトマネージャー以外の方法でも、パッケージマネージャーの使い方、将来のアップデートを混乱させないようにインストールしたパッケージの設定方法など、多くのことが学べます.SSHの使用方法は間違いなくあります; * nixの世界で最も基本的なサーバー管理ツールの1つです。

    Ubuntuや他のサーバープラットフォームを使用する方法を習得する代わりに、HerokuのようなPlatform-as-a-Serviceオプションを使用することもできます。PaaSホスティングプロバイダは本当にそのすべてを処理します。私はこのアプローチをお勧めします。つまり、PaaSは、技術のレベルにかかわらず開発に集中し、サーバ管理者には集中したくない人にとっては良い選択だとは言えますが、Linuxサーバプラットフォームの経験が少しずつ進歩するのも事実ですあなたのコードが実行される環境を理解するのに役立ちます。したがって、あなたがPaaSに行っても、Ubuntuをちょっとした(またはたくさんの)微妙な修正をしてもメリットがあります。

    PaaSのもう1つの利点は、通常インフラストラクチャが取引のNginx部分(プロキシ経由の遅いリクエストのバッファリング)を処理することです。これは、例えば、Herokuの場合です。したがって、インフラストラクチャのその部分についてまったく心配する必要はありません。

  3. 質問のこの部分は答えが広すぎますが、説明が必要な場合はコメントにお知らせください。私はそれがこのチュートリアルのようalmoastやってる

+0

詳細な説明ありがとうございます。それらの2つに本当に非常に混同されました。今私はvpsをとり、sshのためにパテを使うと思う。もう1つだけ、配備したファイルを変更するにはどうすればよいですか?私はファブリックについて聞いたことがありますが、その背後にあるロジックを把握することは本当に難しかったです。どうやってそれを説明していただけますか?再度、感謝します。 –

+0

@ベンジャミン最終的には、更新されたプログラムファイルをサーバー上に取得し、Webサーバープロセスを再起動するだけです(またはコードをリロードする必要があります)。ファブリックはこれを簡単にするためのツールなので、必要以上に複雑な場合は使用しないでください。 scpまたはsftpからputtyまでは問題ありません。サーバーからソースコードリポジトリから直接gitをダウンロードするなど、他の方法も公正なゲームです。 –

+0

さて、私もgitを見ていきます。再度、感謝します! –

2

http://michal.karzynski.pl/blog/2013/06/09/django-nginx-gunicorn-virtualenv-supervisor/
nginxのはgunicornとそのサービング静力学、私のpython的環境のためにvirtualenvの、私のアプリの実行を監視するスーパーバイザ上で実行中のアプリをDjangoのための私のプロキシです。
それはあなたが、私は(今では、PostgreSQLの過去にMySQLを使用)を助ける尋ね、いくつかのエラーのない場合はPostgreSQLの使用で実行されますが可能です

+0

ありがとうございます。しかし、私は開発と生産の間の方法について混乱していました。しかし、上記のリンクは確かにあなたに感謝のための助けです! –

+1

そのリンクはかなり素晴らしいです! – yeaske

1

まず、あなたがWindowsとの幸せならUbuntuのを使用する必要はありません。私はnginxがWindows上で動作するかどうかはわかりませんが、実際にはそうでなければ非常に驚くでしょう(実際にはhereはWindowsにインストールするためのnginxドキュメントです)。一方、Apacheは間違いなくWindows上で動作します。 Djangoのドキュメントには、Djangoに対応するためにApache/mod_wsgiを設定する方法のa full explanationがあります。

2台のサーバーは必要ありません。私はあなたがなぜあなたがそうすると思いますか分かりません。なぜなら、通常の理由は静的資産を別のサーバーに置くことですが、それは理由として言及していません。あなたは小さなサイトについて話しているだけなので、あなたはそれをする必要はありません。 Djangoと静的資産の両方を提供するように構成された1台のサーバーは正常に動作します。ここでも、ドキュメントでその方法を正確に説明しています。

+0

ありがとうございました。私が周りをグーグルで調べたところ、nginxを使ったuWSGI/Gunicornがベストプラクティスであることがわかりました。だから、私はそれらの2つを実装することを考え、ここで質問しました。 –

関連する問題