4

我已经设置了我的第一台流浪机器,并通过刀下载了一些食谱。

我被虚拟主机的设置困住了。

这是我的流浪文件:

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

  config.vm.box = "precise32"

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

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

  config.vm.network :private_network, ip: "192.168.33.10"


  config.vm.provision :chef_solo do |chef|
    chef.json = {
        "mysql" => {
        "server_root_password" => "admin",
        "server_repl_password" => "admin",
        "server_debian_password" => "admin"
        },
        "apache" => {
            "listen_address" => "0.0.0.0"
        }
    }
    chef.add_recipe "apt"
    chef.add_recipe "vim"
    chef.add_recipe "openssl"
    chef.add_recipe "apache2"
    chef.add_recipe "mysql"
    chef.add_recipe "mysql::server"
    chef.add_recipe "php"
    # chef.add_recipe "php::module_apc"
    chef.add_recipe "php::module_curl"
    chef.add_recipe "php::module_mysql"
    chef.add_recipe "apache2::mod_php5"
    chef.add_recipe "apache2::mod_rewrite"
  end

  web_app "blog_site" do
    server_name "blog"
    server_aliases [ "blog.#{node['domain']}", node['fqdn'] ]
    docroot "/var/www/blog_site"
  end

  #
end

我在这里看到,如果我想通过 apache 食谱设置虚拟主机,我必须使用“web_app”定义。

我已将其添加web_app到 vagrant 文件中,但出现此错误

in `block in <top (required)>': undefined method `web_app' for main:Object (NoMethodError)

这意味着(我认为)语法错误:)

我怎样才能解决这个问题?“web_app”的定义在哪里?

4

2 回答 2

15

调用web_app必须进入配方。

例如,您可以my-site在一个名为my-site. 必须至少有 3 个文件:

  1. my-site/metadata.rb带有基本元数据:

    name "my-site"
    description "Adds Apache domain configuration for my site"
    
  2. my-site/recipes/default.rb

    include_recipe "apache2"
    
    web_app "my_site" do
      server_name "my-site.localhost"
      server_aliases ["www.my-site.localhost"]
      docroot "/vagrant"
    end
    
  3. my-site/templates/default/web_app.conf.erb- 从apache2食谱 ( apache2/templates/default/web_app.conf.erb) 的示例模板中复制其内容。

请注意,我使用"my-site.localhost"作为 ServerName。您应该用您的域名替换它,因为您的代码中没有定义node['fqdn']和。node['domain']DocRoot 也必须是您网站的正确路径 - 它可能是您的 vagrant 同步目录,"/vagrant"默认情况下(您可以更改它)。

您可能还希望添加192.168.33.10 my-site.localhosthosts主机(您的实际操作系统)上的文件中。

我写了一篇关于 Vagrant 和 Chef solo 的介绍性文章,它可能对你有用:http ://scriptin.github.io/2013-05-09/vagrant-chef-intro.html

于 2013-05-15T21:32:37.013 回答
1

它必须进入您必须编写的食谱的食谱,因为(显然?我不知道 Apache 食谱这么好)无法通过普通节点配置(chef.json)配置 Apache 虚拟主机。

于 2013-05-15T17:07:36.977 回答