2011-04-14 7 views
8

私はDjango Appを配備している企業(大規模なユーザーベース)には実際に勤めたことがありません。これを実行する最良の方法は何か不思議です。経験豊富なWeb開発者はどのようにEC2上でDjangoをプロダクションに展開していますか?

今、私はEC2でDjango Appをホストしています。アプリのコードが私のgithubアカウントにあります。私はnginx静的なコンテンツを提供し、その背後にある単一のApacheサーバーdjango + mod_wsgiを実行している。

私はベストプラクティスが「継続的な展開」であることを理解しようとしています。今、私はEC2上で次の操作を実行し、追加機能を追加した後:

1)GitのリセットHEADは

2を--hard)gitのは

3を引く))のapache

4を再起動します再起動nginx

EC2で実行している場合、デバッグがFalseに設定され、データベースがsqlite3(開発)からmysql(運用)に切り替わるように、settings.pyファイルにカスタムロジックがあります。

これは私にとって今のところうまくいくようですが、このプロセスで何が問題なのか、どうすれば改善できるのでしょうか。

おかげ

答えて

6

私は100%のDjangoで複数のサーバーに

+0

+1可能な限りファブリックは絶対に行きます。 –

+0

+1ファブリックは、デプロイメントロジックを繰り返し実行可能にし、バージョン管理が可能で、簡単に保ちます。 –

+0

ファブリックのように見えます。私は今週末それをチェックします。あなたの助けを借りてくださったみなさん、ありがとうございました(下記の皆さん) – josephmisiti

2

を展開するFabricを使用するシステム私はThe Texas Tribuneの元リード開発者です、と働いてきました。 RightScaleを使用してEC2に導入しました。私は個人的にデプロイメントスクリプトを書いていませんでしたが、ローテーションに新しいインスタンスを非常に迅速に、そして必要に応じて拡張することができました。それは安くはないが、私の意見ではすべてのペニーの価値があった。

+0

ありがとうございます。可能であれば私は無料の解決策を探していますが、私もこれをチェックアウトします – josephmisiti

1

私はジョンに同意し、Fabricがこのようなことを楽にするツールだと言います。ポスト・コミット・フックで自動的にデプロイするようにgitを構成したくないかもしれませんが、テスト・スイートをローカルで実行するようにファブリック・コマンドを構成し、それが通過するとプロダクションにプッシュすることができます。

多くの人が、実稼働環境にあるかどうかを検出するカスタムロジックを持つのではなく、別のdevおよび実働設定ファイルを実行します。統合ファイルから継承し、devとproductionの間で異なるビットをオーバーライドすることができます。次に、単一の統一されたsettings.pyに頼るのではなく、本番ファイルを使用してサーバを起動します。

アプリケーションをホストするためだけにApacheを使用している場合は、軽量ソリューションのメリットがあります。 nginxでfastcgiを使用すると、Apacheのオーバーヘッドを完全になくすことができます。 nginx用のwsgiモジュールもありますが、現時点では生産準備が整っているかどうかはわかりません。

+0

完全にApacheを削除する利点は何ですか?私はそれがnginx(たぶん)経由で別のポートにリダイレクトされないため、リクエストをスピードアップするかもしれないと思いますか?私は、Apacheがnginxに比べてはるかに成熟した製品であるという印象を受けました。それが人々がそれを使い続けている理由です。 – josephmisiti

+0

Apacheはもっと機能が豊富な製品です。そのため、人々は引き続きその製品を使用し続けています。あなたのスタック内の不要なレイヤーをなくすことは、速度を向上させる良い方法であり、nginxはそれができるタスクのためにapacheを殺します。ユーザー設定可能な.htaccessはおそらく人々がApacheを保持する最も一般的な理由です。メモリ使用量を減らすことは、Apacheを削除するもう一つの理由です。 –

+0

また、スタックにnginxが既に入っている場合は、「成熟した製品」のコメントではわかりません。 nginxが失敗した場合、それはapacheが踏み込んで引き継ぐようなものではありません。 –

1

これを管理する方法がもう1つあります。 ubuntu/debian amisの場合、バージョンを管理し、アプリケーションを.debにパッケージ化することによって展開するのが良いです

+0

私はubuntuを使っていますか?私はこれの利点について少し混乱していますか? – josephmisiti

+0

私はあなたやubuntuを使用して他のいくつかの目的を確認していない。 利点は簡単なコード管理になり、設定オプションのマージを管理し、依存関係を自動的に管理します。前/後に実行することができます..構成/データベースなどを更新するためのインストールスクリプト – rootart

+0

これは恐ろしい考えです。これは単に人々がPythonプロジェクトとDjangoプロジェクトをどのように配備するかではありません。私たちはpipとvirtualenvを使用し、southは移行のために使用します。 –