![每次我想更改我的某个源文件时,是否应该使用 vagrant destroy/up/reload/provision 或类似的东西?](https://linux22.com/image/1394533/%E6%AF%8F%E6%AC%A1%E6%88%91%E6%83%B3%E6%9B%B4%E6%94%B9%E6%88%91%E7%9A%84%E6%9F%90%E4%B8%AA%E6%BA%90%E6%96%87%E4%BB%B6%E6%97%B6%EF%BC%8C%E6%98%AF%E5%90%A6%E5%BA%94%E8%AF%A5%E4%BD%BF%E7%94%A8%20vagrant%20destroy%2Fup%2Freload%2Fprovision%20%E6%88%96%E7%B1%BB%E4%BC%BC%E7%9A%84%E4%B8%9C%E8%A5%BF%EF%BC%9F.png)
我最近开始在虚拟机中使用 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"