12

私は最近、django ベースの CMS であるMezzanineをいじり始めました。私は最近、私のホストである webfaction.com にアップロードするように Fabric を構成することができました。これは、共有ホスティングで Web サイトを自動的に作成することがもう少し複雑であり、そのプロセスを自動化したかったからです。

全体として、そのシステムは構成ファイルのテンプレートのアップロードに Fabric を使用し、python パッケージの処理に pip + virtualenv を使用します。

しかし、私は最近ビルドアウトについて読んだばかりで、展開のためにそれを誓う人もいれば、そうしない人もいます。ここを参照してください: buildout と Fabric を使用した Django リモート展開とここを参照してください: http://labs.creativecommons.org/2011/07/29/not-panicking-switching-to-virtualenv-for-deployment/

buildout と pip の結果をググってたくさん見つけましたが、buildout + fabric と pip + fabric に関する情報はあまりありません。buildout の一部の機能 (構成テンプレートのアップロード、スーパーバイザーの処理) は、ファブリックを介して実行できるようです。いずれかのアプローチの長所と短所を教えてもらえますか?

注: 当面は共有ホスティングを使用しているため、sudo を実行できません。これは、多くの既存のレシピでビルドアウトが必要になる可能性があるためです。

4

2 に答える 2

17

概要: Pip は python パッケージのみをインストールします。明らかに、他にも必要な作業があります。追加の作業のほとんどは buildout で行うことができ、buildout がローカルとサーバーの両方でそれを行うという利点があります。そのように、ファブリックはより少なくする必要があります。欠点は buildout の余分な複雑さです。そのため、いくつかのカスタム ファブリック コマンドで十分な場合は、それが望ましいかもしれません。では、トレードオフはどのように機能しますか?

長いバージョン:

Pip は、プロジェクトの python パッケージのインストールに適しています。Buildout は、プロジェクトのほぼすべて (Python パッケージを含む) のセットアップに適しています。それが目標の違いです。

さて...生地をミックスに持ち込みます。pip+fabric を使用すると、ファブリック内から pip を呼び出してすべての python パッケージを取得し、ファブリック自体を使用して他のすべてをセットアップできます。apache/nginx 構成ファイル、いくつかのディレクトリ (「var/log/」) の作成など。

buildout+fabric を使用すると、ディレクトリの作成やテンプレートからのファイルの生成、スーパーバイザーのセットアップ、スーパーバイザーを起動するための cronjob のセットアップなど、多くのことを行うように buildout を既に構成できます@reboot。そのため、fabfile が行う必要があることは少なくなります。

だから... あなたは責任を交換します。ビルドアウトでできることはすべてファブリックでもできます。ビルドアウトでできることはすべて、カスタム python (またはシェル) スクリプトを pip と組み合わせて実行できます (「実行する必要がある追加のコマンドについては、README を読んでください」)。

ビルドアウトがプロジェクトの不可欠な部分である場合、ビルドアウトは適切な場所です。次のように考えてください。サーバー上の本番環境と開発マシン上のローカルの両方で必要な場合は、ビルドアウトで行う方がよいでしょう。それ以外の場合は、ローカル マシンでも fabric を実行する必要があります。あなたはそれを行うことができますが...

私自身、ビルドアウトと組み合わせてファブリックを使用しています。ビルドアウトは、プロジェクト自体をセットアップするためのものであり、その周りのすべてのファブリックです。いくつかの例:

  • 本番サーバーで実際にビルドアウトを git から複製します。

  • Git pull (および適切なタグのチェックアウト)。

  • スーパーバイザを再起動しています。

私の提案: ビルドアウト レシピの pypi を調べて、それらが便利かどうかを確認してください。完全なビルドアウト構成が意味する余分な複雑さに飛び込む価値があるほど、十分な作業を節約できますか? buildout から十分に得られない場合は、fabric ファイルに fabric+pip と一連のカスタム コマンドを追加したほうがよい場合があります。

于 2013-09-19T13:17:55.497 に答える