あなたの設定、トリック、そして何よりもワークフローは何ですか?
これらのツールは素晴らしいですが、それらの使用法に関連付けられたベストプラクティスはまだないため、どのツールを使用するのが最も効率的なのかわかりません。
--no-site-packages
を使用しますか?「ベストプラクティス」は状況に大きく依存するため、自分のベストプラクティスであると主張することはありません。私は主に小規模なサイトで作業しているため、複数サーバーのデプロイメントやCDNなどはありません。Webfaction共有ホスティングデプロイメントをサポートする必要があります。クライアントによっては、最も安価なホスティングが必要なためです。多くの場合、さまざまな環境でサイトを何度も展開する必要があるため、スクリプトによる繰り返しの展開が重要です。
現時点では、新しい展開は次の手順に分かれています。
fab staging bootstrap
(サーバーのセットアップと初期コードの展開)fab staging enable
(このサイトのApache/nginx構成を有効にします)fab staging reload_server
(Apache/nginx設定をリロードします)。もちろん、これらを単一のコマンドラインに結合することもできますfab staging bootstrap enable reload_server
。
これらの手順が完了したら、新しいコードでデプロイメントを更新するだけでfab staging deploy
。
更新をロールバックする必要がある場合は、fab staging rollback
。ロールバックで特に不思議なことはありません。コードを最後にデプロイされたバージョンにロールバックし、データベースを以前の状態に移行します(これには、DBのデプロイ後の移行状態に関するメタデータをテキストファイルに記録する必要があります)。
私はこの回答で説明されているFabricスクリプトを数年間使用していないため、まったく維持されず、その品質に対する責任は負いません:-)しかし、それらは https:// bitbucket .org/carljm/Django-project-template -fabfile.py
はレポルート、およびdeploy/
サブディレクトリ。
私はファブリックを使用してコードをビルドおよびデプロイし、システムがすでにセットアップされていると想定しています。私は puppet のようなツールがApacheやmysqlのようなもののインストールを自動化するのにより適切であると思いますが、ワークフローにはまだ含まれていません。
また、私は通常プロジェクトごとに異なるvirtualenvを持っています。これらは、pythonの「基本」インストールから作成されます。ここで-カールが指摘したように、グローバルpythonライブラリを残すことができます。
したがって、ワークフローに関しては次のようになります。