it-swarm-ja.com

ソースファイルの1つを変更するたびに、vagrant destroy / up /保健再生/プロビジョニングなどを使用する必要がありますか?

私は最近、vagrantとDjango in avmで少し開発を始めました。

マシンを起動するにはvagrant upを使用し、マシンを破壊するにはvagrant downを使用します。

これらのコマンドはどちらも地獄のように時間がかかりますが、たとえば、views.pyファイルに必要な場合など、Django側で、ソースコードを変更する必要があることがよくあります。それに何かが追加されました。

vagrant sshを介してVMにSSHで接続しているときに、runを呼び出してサーバーを起動しましたが、ソースファイルを変更して、Webページをリロードするだけで大​​丈夫ですか?または、sshを終了して、vmを再プロビジョニングまたはリロードする必要がありますか?

4
michaelsnowden

私はあなたがいくつかの誤解を持っていると思います、そして正しい答え(外から見た)はあなたの正確なセットアップに依存します。

  • 破棄 ボックス(VM)のプロセスは、vagrant destroyを介してトリガーされます。これにより、すべてのデータが破棄されます。あなたの場合、VMをシャットダウンします(vagrant downを使用)。
  • この投稿に chef のタグを付けたので、サーバーはChefを介してプロビジョニングされ、スタック全体がDjangoを実行するようにプロビジョニングされているようですよね?
  • シェフのレシピが正しく記述されている場合(または、アプリケーションを更新する目的で)、プロビジョニングを実行すると、VM内のコードが更新されます。古いVagrantバージョン(IIRC <1.3)では、プロビジョニングはvagrant reloadで行われます。新しいバージョンでは、--provisionオプションを追加する必要がありますが、これは必要ありません。シェフの実行をトリガーするには、vagrant provisionを呼び出すだけです。これは、ボックス全体をリロードせずにシェフを開始するだけです(つまり、シェフのレシピが正しければ、まったく必要ありません)。
  • 「シェフのレシピが正しい場合」というよく使われるフレーズは、もちろん、レシピがコードの変更をボックスに取り込むだけでなく、それらをアクティブにするために必要なことを行う必要があることを意味します(キャッシュのフラッシュ) 、サービスの再起動など)。しかし、それは大きく異なります..私はDjangoに言います。そのようなものが欠落している場合は、down/upが役立つ可能性があります。 Apacheを停止して開始しました(再起動後)。
  • 現在SSH経由で手動で実行しているものと同じものが、Chefレシピによってもトリガーされることを確認する必要があります。

runコマンドがどこから来ているのかわかりません。 Djangoに関連するものは何も見つかりませんでした。

したがって、追加のコードがないと、詳細なヒントを提供するのは困難です。

ただし、コードをVMにプロビジョニングし、ものをリロードすることは、まさにVagrantのユースケースのようなものです。

3
StephenKing

開発中に、ファイルを更新するだけの場合は、同期フォルダーの使用を検討することもできます。

config.vm.synced_folder "../code", "/home/vagrant/code"
0
exic

信じられないほど簡単なテストの結果、Djangoファイルのソースコードを編集し、ファイルを保存して、Webページを更新するだけで結果を確認できることがわかりました。

これは私が「ウェブページを更新するだけ」という意味です: browser before refresh

そして、ブラウザページを編集、保存、更新した後: browser after refresh

私が「実行する」とは、私の料理本に固有のものかもしれません(それが、 StephenKing と私がそれについて何も見つけられなかった理由だと思います)。この過程で私の端末は次のようになりました: My terminal

それが私の答えを明らかにすることを願っています。

0
michaelsnowden