ape*_*ari 4 ruby virtualhost chef-infra vagrant
我已经设置了我的第一台流浪汉机器,并通过刀下载了一些食谱.
我坚持使用虚拟主机的设置.
这是我的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, 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
Run Code Online (Sandbox Code Playgroud)
我在这里看到,如果我想通过apache cookbook设置虚拟主机,我必须使用"web_app"定义.
我已添加web_app到vagrant文件但我收到此错误
in `block in <top (required)>': undefined method `web_app' for main:Object (NoMethodError)
Run Code Online (Sandbox Code Playgroud)
这意味着(我认为)语法错误:)
我怎样才能解决这个问题?定义"web_app"的地方在哪里?
scr*_*tin 15
调用web_app必须进入食谱.
例如,您可以my-site在名为的目录中创建cookbook my-site.必须至少有3个文件:
my-site/metadata.rb 基本元数据:
name "my-site"
description "Adds Apache domain configuration for my site"
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)my-site/templates/default/web_app.conf.erb- 从apache2cookbook(apache2/templates/default/web_app.conf.erb)的示例模板中复制它的内容.
请注意,我"my-site.localhost"用作ServerName.您应该将其替换为您的域名,因为node['fqdn']并且node['domain']未在您的代码中定义.DocRoot也必须是您站点的正确路径 - 它可能是您的vagrant synced目录,"/vagrant"默认情况下(您可以更改它).
你可能还想在主机(你的实际操作系统)上添加192.168.33.10 my-site.localhost你的hosts文件.
我写了关于Vagrant和Chef solo的介绍性文章,它可能对你有用:http://scriptin.github.io/2013-05-09/vagrant-chef-intro.html