Chef infra 流浪厨师和Apache2(未找到404)

Chef infra 流浪厨师和Apache2(未找到404),chef-infra,vagrant,Chef Infra,Vagrant,我正试图和流浪汉和厨师打交道。如果我从git下载opscode cookbook apache2,请签出最新标记并在我的文件中执行以下操作: # -*- 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.v

我正试图和流浪汉和厨师打交道。如果我从git下载opscode cookbook apache2,请签出最新标记并在我的文件中执行以下操作:

# -*- 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并可以工作的VM,但是(经过一些挖掘后,我发现)/var/www不是documentroot,而是infact/etc/apache2/htdocs

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

任何帮助都将不胜感激


Guest Ubuntu12.04

否。在Vagrant文件中,您可以配置虚拟机(如内存、主机名、端口)和应该运行的配方(在“供应”部分)。但是更改apache文档根需要更改apache配方。查看并更改所需路径。

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

假设您使用的是标签1.7.0

你可以

  • (更容易)在中编辑
    default['apache']['docroot\u dir']
  • Vagrantfile
    (相当于chef solo运行的node.js)中使用以覆盖默认值
  • 注意:确保编辑了正确的分发相关块


    我已经找到了解决方案,它实际上是相当基本的,在Wagrant 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
    

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

    此解决方案适用于Vagrant文件:

    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
    

    通过这种方式,您不需要每次“漫游”时都通过SSH启动站点。

    指向attributes/default.rb=>的链接错误。非常感谢,非常简洁,这正是我所需要的。