每次我想更改我的某个源文件时,是否应该使用 vagrant destroy/up/reload/provision 或类似的东西?

每次我想更改我的某个源文件时,是否应该使用 vagrant destroy/up/reload/provision 或类似的东西?

我最近开始在虚拟机中使用 vagrant 和 django 进行一些开发。

为了启动我的机器,我使用vagrant up,为了销毁它,我使用vagrant down

这两个命令都非常耗时,但我经常需要在 django 方面更改我的源代码,例如,我的 views.py 文件可能需要添加一些内容。

虽然我已经通过 SSH 连接到虚拟机vagrant ssh,我调用run并设置了服务器,但如果我更改源文件并重新加载网页,这样可以吗?或者我应该退出 ssh,然后重新配置或重新加载我的虚拟机?

答案1

我认为您有一些误解,正确的答案(从外部来看)取决于您的具体设置。

  • 的过程摧毁通过 触发一个框 (VM) vagrant destroy。这会丢弃所有数据。对于您的情况,您可以关闭 VM(使用vagrant down)。
  • 正如你用厨师,看起来您的服务器是通过 Chef 配置的,并且还配置了运行 Django 的整个堆栈,不是吗?
  • 如果您的 chef 配方编写正确(或:意图更新您的应用程序),则运行配置将更新 VM 中的代码。在较旧的 Vagrant 版本(IIRC <1.3)中,配置在 完成vagrant reload。在较新的版本中,您必须添加选项--provision,但这甚至不是必需的。要触发 chef 运行,只需调用vagrant provision。这只会启动 chef 而不会重新加载整个框(也就是说,如果您的 chef 配方正确,则根本不需要)。
  • 常用短语“如果您的厨师食谱是正确的”意味着食谱当然应该做所需的事情,不仅将代码更改带入框中,而且还应该做必要的事情以使其活跃(刷新缓存,重新启动服务等)。但这在很大程度上取决于……我会说取决于 Django。如果缺少这些东西,/down可能up会帮助您,因为它例如停止并启动了 Apache(重启后)。
  • 您只需确保您现在通过 SSH 手动运行的相同操作也由 Chef 配方触发。

我不确定run命令来自哪里。我找不到任何与 Django 相关的东西。

如果没有进一步的代码,很难给你详细的提示。

但是将代码配置到虚拟机中并重新加载正是 Vagrant 的一个用例。

答案2

好吧,经过一个非常简单的测试后,我发现我可以编辑任何 Django 文件的源代码,保存文件,然后刷新网页即可查看结果。

这就是我所说的“只需刷新网页”的意思: 刷新前的浏览器

编辑、保存并刷新浏览器页面后: 浏览器刷新后

我所说的“运行”可能是我的食谱特有的东西(我认为这就是为什么斯蒂芬·金但我找不到任何相关信息)。以下是我的终端在此过程中的样子: 我的终端

希望这能澄清我的答案。

答案3

在开发过程中,如果您只是更新文件,您可能还需要考虑使用同步文件夹。

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

相关内容