2

过去,我在使用 Vagrant 部署“本地”开发实例时曾尝试过几次失败的尝试,但从未能够花时间完全绕过学习曲线。DocumentRoot我再次尝试,虽然我可以加载Opscode食谱(apache2),但它不能开箱即用,因为/vagrant.

我明白了,这并不意外,但我不知道如何将所有这些放在一起,而且 Vagrant 文档没有详细说明,这是可以理解的。另一方面,Opscode食谱自述文件提供了如此多的细节,以至于我的菜鸟无法理解它。

这是我现在拥有的超级简单的片段:

config.vm.provision :chef_solo do |chef|
  chef.cookbooks_path = "cookbooks"
  chef.add_recipe "apache2"

  # You may also specify custom JSON attributes:
  # chef.json = { :mysql_password => "foo" }
end

那里没有多少,我知道。在某种程度上,我知道该chef.json组件会发挥我想要做的事情,但我不知道如何。有人可以提供——或指出我如何DocumentRoot为正在安装的 Apache2 实例配置的以 Vagrant 为中心的示例吗?我希望一旦我有一个例子,我就会知道如何拼凑我需要的所有其他东西。

另外,只是出于好奇,我为什么要调用chef.add_recipe加载 Apache2食谱?还是我误解了语法?

谢谢你的帮助。

4

1 回答 1

1

我没有仔细查看 apache2 食谱,但我相信该食谱附带的默认站点模板指向 /var/www 鉴于此,我认为您有 2 个选项。1) 使用 apache2 cookbook 附带的站点资源来创建一个新站点。2) 通过 vagrant 将你的 web 根目录挂载到 /var/www。哪种方法有点取决于您的目标。如果你只是想测试你的网站,我推荐 2。为了做到这一点,你需要在你的 vagrant 配置中添加这样的东西:

config.vm.share_folder "web", "/var/www", "~/src/www"

其中第一个参数是共享的任意 id,第二个是目标目录(在这种情况下是 /var/www,因为这是 apache 配置中指向的内容),第三个是您正在共享的本地路径.

NB Virtualbox 对符号链接不是很好,所以如果你的共享中有符号链接,你需要添加这个:

config.vm.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/graph", "1"]

这将使符号链接能够工作。

如果您有兴趣学习 Chef,那么您可以采用方法 #1。这将需要创建您自己的说明书并编写一个模板,该模板可以结合 apache 站点定义生成适当的配置文件。如果这是您的目标,那么我可以扩展此答案,为您提供有关如何实现此目标的详细信息。

HTH。

于 2012-07-17T00:41:37.840 回答