3

我正试图与流浪汉和厨师打交道。如果我从 git 下载 opscode 食谱 apache2,检查最新标签并在我的 Vagrantfile 中执行以下操作:

# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant::Config.run do |config|
  config.vm.box = "precise64"
  config.vm.box_url = "http://files.vagrantup.com/precise64.box"
  config.vm.forward_port 80, 8080

  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = "chef/cookbooks"
    chef.add_recipe("apt")
    chef.add_recipe("apache2")
    chef.add_recipe("apache2::mod_rewrite")
  end
end

...我最终得到了一个安装了 apache 并且可以工作的虚拟机,但是(经过一番挖掘,我发现)/var/www 不是文档根目录,它实际上是 /etc/apache2/htdocs

我是否需要在我的 Vagrantfile 中添加一行来配置文档根目录?

任何帮助,将不胜感激!

来宾 Ubuntu 12.04

4

4 回答 4

6

此解决方案适合 Vagrantfile :

Vagrant.configure("2") do |config|

    config.vm.box = "precise32"
    config.vm.box_url = "http://files.vagrantup.com/precise32.box"

    config.vm.network :forwarded_port, host: 8080, guest: 80

    config.vm.provision "chef_solo" do |chef|

        chef.add_recipe "apt" 
        chef.add_recipe "apache2"

        chef.json = { 
            "apache" => {
                "default_site_enabled" => true,
                "docroot_dir" => "/vagrant"
            }
        }

    end

end

这样做你不需要在每次“Vagrant up”时通过 SSH 启动一个站点。

于 2013-08-25T19:49:45.490 回答
2

不。在 Vagrantfile 中,您可以配置您的虚拟机(例如内存、主机名、端口)和应该运行的配方(在配置部分)。但是更改 apache 文档根目录需要更改 apache 配方。查看attributes/default.rb并更改所需的路径。

于 2013-08-22T08:24:44.030 回答
1

这取决于您的 Linux 发行版,对于 Debian/Ubuntu DocumentRoot 默认为,/var/www而对于 RHEL/CentOS/Oracle/Fedora/SUSE 它默认为/var/www/html,对于 Arch Linux 它默认为/srv/http.

假设您正在使用标签 1.7.0。

你可以

  1. (更容易)编辑default['apache']['docroot_dir']in attributes/default.rb
  2. 使用自定义 JSON 数据(等效于Vagrantfile用于 chef-solo 运行的 node.js)来覆盖默认值。

注意:确保编辑正确的分发相关块

于 2013-08-22T13:36:20.833 回答
0

我找到了解决方案,它实际上是相当基本的,在 vagrant up 期间粗略地看一下输出就会给出答案。

[2013-08-25T14:30:51+00:00] INFO: execute[a2dissite default] sending restart action to service[apache2] (delayed)

默认情况下,apache 禁用默认站点。ssh 进入实例并运行

sudo a2ensite default
sudo service apache2 restart

解决问题。

查看 attributes/default.rb 我发现了这一行:

  default['apache']['default_site_enabled'] = false

现在我不确定更改此属性的最佳方法。(直接在这个文件中?我怀疑)

于 2013-08-25T14:48:40.687 回答