【发布时间】:2013-01-20 19:23:08
【问题描述】:
我正在尝试通过 Vagrant 创建一个简单的 LAMP,它可以支持存储在 /var/www 中的多个网站。这可以通过虚拟主机来完成。
每个项目都应该以 .dev 结尾
无法忍受创建每个构建都支持一个项目和一个数据库的想法。
我不能用 Puppet 或 Chef 做头或尾。我宁愿避免这种情况,但很乐意从回购中克隆它。
我需要一些建议或指出正确的方向。
谢谢
【问题讨论】:
我正在尝试通过 Vagrant 创建一个简单的 LAMP,它可以支持存储在 /var/www 中的多个网站。这可以通过虚拟主机来完成。
每个项目都应该以 .dev 结尾
无法忍受创建每个构建都支持一个项目和一个数据库的想法。
我不能用 Puppet 或 Chef 做头或尾。我宁愿避免这种情况,但很乐意从回购中克隆它。
我需要一些建议或指出正确的方向。
谢谢
【问题讨论】:
查看下方的更新信息
我一直在寻找如何改进我的 Web 开发工作流程的方法。我目前在主题项目等中使用各种工具和应用程序,例如 LAMP、Webmin 和 Filezilla。然后我发现了这个名为 Vagrant 的神奇工具的存在,在用我的项目对其进行测试后,我爱上了它,并决定将它集成到我当前的本地 Web 开发环境中。因此,我进一步挖掘并搜索了如何使用我选择的基本框Ubuntu 12.04 Precise Pangolin 32-bit 使用 Vagrant 创建和设置 Multi Vhosts 设置的可能性。搜索 Google 会返回许多结果,但我决定点击 stackoverflow 中的链接并找到这个问题。我点击了Dimitri Kouvdis 的回答中提到的链接,这是一个 Github Repo。我已经对其进行了测试,并遇到了与Dimitri Kouvdis 也遇到的非常相似的问题。但它现在已经解决了,多亏了他的 cmets,我让它工作了。但是在我寻找理想的具有多个虚拟支持的Vagrant Box的过程中,我从 Github 搜索并测试了几个 repo,直到找到适合我的一个,我做到了找到了一个。我寻找这些 repos 的原因是我还不知道如何使用 Puppet 和 Chef 来配置我自己的 Dev Server,这就是原因。
onema / vagrant-lamp-development
https://github.com/onema/vagrant-lamp-development
Testing the Github Repo Dimitri Kouvdis 提到过,我遇到了几个问题,在此期间我停止了工作并决定从 Github 搜索类似的 repo。我找到了几个并测试了其中一些,包括 Nino Paolo 的 Repo (https://github.com/paolooo/vagrant-lamp)。我在vagrant up 期间又遇到了几个问题。我决定再次搜索另一个,直到找到并成功设置 onema's repo。我最终决定在我的 Web 开发实践环境中使用并将此解决方案集成到我当前的工作流程中。我开始喜欢 onema 的 repo 因为;
正如我上面提到的,通过阅读并按照 Github Repo 页面上的说明进行设置很容易(特别是对于像我这样的新手和自学者)。 -https://github.com/onema/vagrant-lamp-development。您可以选择使用下载的zip file 或选择使用git clone https://github.com/onema/vagrant-lamp-development 将Vagrant 文件复制到本地驱动器。
git 将文件下载到本地驱动器,然后进行基本的 Vagrant 和 VirtualBox 设置。阅读Github Page 的说明,并执行以下步骤。通过我的设置,我稍微编辑了Vagrantile。在 orig Vagranfle 文件的 line: 70 中,我通过在 config.vm.synced_folder "~/Sites", "/vagrant", nfs: true
# 来禁用 NFS
所以,它现在看起来像这样......
#config.vm.synced_folder "~/Sites", "/vagrant", nfs: true
然后注释掉...
#config.vm.synced_folder "~/Sites", "/vagrant"
line: 140 来自原始Vagrantfile
所以,它现在看起来像这样......
config.vm.synced_folder "~/Sites", "/vagrant"
我这样做是因为在我的机器上,在vagrant up 期间,它会抛出几个我不理解的与 NFS 相关的错误。
现在,为了这个例子,从它的回购页面的例子中,创建一个文件夹,你必须将它命名为Sites。这应该位于您的用户帐户的文件夹根目录或您的主文件夹中。 /home/your-user-account-home-folder/Sites
就我而言,(注意那个大写的 S)/home/gary/Sites
A.
创建您的示例 dev-site/vhost 并创建一个名为 wordpress.dev 的新文件夹,并将其作为您的 vhost wordpress.dev 的文档根目录,然后在此处添加您的项目文件.请参阅下面的示例;/home/gary/Sites/wordpress.dev
B.
现在,为您新创建的虚拟主机创建一个简单的启动页面,以便在您访问开发站点时确认您的配置将您重定向到目标虚拟主机根文件夹你的浏览器。当然,当您的配置正确时,您会看到启动页面。这就是我制作初始页面的方式。
我创建了一个 index.php 文件并在其中放入了一些代码,就像这样;
<?php echo "Success!!! Your wordpress.dev looks fine"; ?>
所以当你成功到达你的虚拟主机时,你会收到消息Success!!! Your wordpress.dev looks fine
现在,将您的 Vagrant Box 的 IP 地址添加到您的 hosts 文件中,并将您的开发站点 wordpress.dev 映射到它,如下所示; 192.168.50.4 wordpress.dev
注意:192.168.50.4 是 Vagrant Box 的默认配置 IP 地址,您可以根据自己的喜好更改它并更新您的 hosts 文件。
就我而言,我是这么说的,
A10.10.10.10 wordpress.dev - 在我的 hosts 文件中,而
Bconfig.vm.network "private_network", ip: "10.10.10.10"
在我的 Vagrantfile 中。
您可以通过查看 Vagrantfile 内部并在此行下方导航来找到此设置 # Host-Only networking required for nfs shares
然后从那里更改ip: 设置并更新您的hosts 文件以匹配IP。
再次编辑您的Vagrantfile 并添加您的虚拟主机设置,指向您的开发站点文件夹,像这样添加这些代码块;
:wordpress => {
:name => "wordpress",
:host => "wordpress.dev",
:aliases => ["wordpress.dev"],
:docroot => "/wordpress.dev"
}
当您将代码添加到 orig Vagrantfile 时,它应该如下所示;
:vhost => {
:localhost => {
:name => "localhost",
:host => "localhost",
:aliases => ["localhost.web", "dev.localhost-static.web"],
:docroot => ""
},
:wordpress => {
:name => "wordpress",
:host => "wordpress.dev",
:aliases => ["wordpress.dev"],
:docroot => "/wordpress.dev"
}
所以你的Vagrantfile 现在看起来像下面这个;注意:wordpress 的w 正上方的逗号, 和右大括号}。
里面应该有一个逗号,当你添加另一个虚拟主机时,你应该在 wordpress 的右大括号} 的右侧添加另一个逗号。
Vagrant.configure("2") do |config|
config.vm.box = "precise32"
config.vm.box_url = "http://files.vagrantup.com/precise32.box"
config.vm.host_name = "localhost"
config.vm.provision "chef_solo" do |chef|
chef.cookbooks_path = "cookbooks"
chef.add_recipe "vagrant_main"
#####################################
# MONGODB
# https://github.com/edelight/chef-cookbooks
#####################################
chef.add_recipe "mongodb::10gen_repo"
chef.add_recipe "mongodb::default"
#####################################
# REDIS
# https://github.com/phlipper/chef-redis
#####################################
chef.add_recipe "redis"
chef.json.merge!({
:mysql => {
:server_root_password => "root",
:server_debian_password => "root",
:server_repl_password => "root"
},
#####################################
# YOU WILL NEED TO ADD THESE DOMAINS
# TO THE LIST OF HOSTS IN YOUR LOCAL
# ENVIRONMENT FOR THESE TO BE PROPERLY
# ROUTED
#####################################
:vhost => {
:localhost => {
:name => "localhost",
:host => "localhost",
:aliases => ["localhost.web", "dev.localhost-static.web"],
:docroot => ""
},
:symfony => {
:name => "symfony",
:host => "symfony.web",
:aliases => ["symfony"],
:docroot => "/symfony/web"
},
:wordpress => {
:name => "wordpress",
:host => "wordpress.dev",
:aliases => ["wordpress"],
:docroot => "/wordpress.dev"
}
}
})
end
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 3306, host: 3307
##########################################################################
# UNCOMMENT IF NFS IS DISABLED
##########################################################################
config.vm.synced_folder "~/Sites", "/vagrant"
##########################################################################
# NFS
# Enable if you have performance issues with large projects.
# see the following links for more info:
# http://forum.symfony-project.org/viewtopic.php?t=52241&p=167041#p147056
# http://docs.vagrantup.com/v2/synced-folders/nfs.html
# http://www.phase2technology.com/blog/vagrant-and-nfs/
###########################################################################
# Host-Only networking required for nfs shares
config.vm.network "private_network", ip: "10.10.10.10"
#config.vm.synced_folder "~/Sites", "/vagrant", nfs: true
config.vm.provider :virtualbox do |vb|
# # Don't boot with headless mode
# vb.gui = true
#
# # Use VBoxManage to customize the VM. For example to change memory:
vb.customize ["modifyvm", :id, "--memory", "512"]
end
end
ctrl + alt + t 并输入 cd vagrant-lamp-development 将目录更改为 vagrant-lamp-development 文件夹并输入 vagrant up 要添加新虚拟主机,只需在 /home/your-home-folder/Sites/new-project-folder 内创建一个新文件夹,然后...
重复步骤 3B、4A、5
如果您在 VM Box 运行时对 Vagrantfle 进行了更改或添加了 Vhost,请输入..vagrant provision
在您的终端中使更改生效。
如果您在 VM Box 关闭时对 Vagrantfile 进行了更改或添加了虚拟主机,请输入...vagrant up --provision
在您的终端中以使更改生效。
注意:本指南中使用的Vagrantfile 将下载64-bit Precise Pangolin Basebox Base Box,您可以通过以下方式将其更改为32-bit Precise Pangolin Basebox从 Vagrantfile 更改配置。
我这样做了,因为我已经下载了我的 32 位基本框。于是我把它改成了32位,这样就不用再下载了。
改变...
Vagrant.configure("2") do |config|
config.vm.box = "precise64"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
至
Vagrant.configure("2") do |config|
config.vm.box = "precise32"
config.vm.box_url = "http://files.vagrantup.com/precise32.box"
Supports Multiple Vhosts
这里是如何添加一个新的vhosts
创建一个新的.json 文件匹配您所需的开发站点名称,例如:wordpress.dev invagrant-lamp/data_bags/sites
所以它应该看起来像...vagrant-lamp/data_bags/sites/wordpress.json
编辑新创建的文件wordpress.json并添加以下内容(仅作为示例);
{
"id": "wordpress",
"host": "wordpress.dev",
"aliases": [
"www.wordpress.dev"
]
}
在vagrant-lamp/public 内创建一个名为wordpress.dev 的新文件夹
所以它看起来像...vagrant-lamp/public/wordpress.dev
编辑您的 hosts 文件以添加和映射 192.168.33.10``wordpress.dev
所以它应该看起来像这样......
192.168.33.10 wordpress.dev
你很高兴...启动 vagrant 并输入 vagrant up --provision,如果框已关闭
如果在您执行此过程时该框已打开,请输入 vagrant provision。
之后,启动浏览器并测试配置,浏览至http://wordpress.dev。
确保在其中放置一些索引文件。
伙计们,我的 Linux Mint 13(基于 Ubuntu 12.04)开发盒坏了。这就是为什么我不得不再次从头开始重新安装我的操作系统(我的坏...使用假 RAID 并且没有备份)。但这一次,我使用的是基于 Ubuntu 14.0.4 LTS 的 Linux Mint 17。
所以我从头开始重新安装所有内容并快速设置我的 Web 开发环境。但事实证明,我之前使用 vagrant 的工作设置不再有效。因此,我搜索了有关如何设置另一个可与 Ubuntu 14.04 LTS 一起使用的 Web 开发环境的解决方案。幸运的是,我找到了一个使用另一个名为 CPT Server 的 Github 存储库的工作设置@
所以这就是你的设置方式。
vagrant up
就是这样!第一次启动需要很长时间。
只需编辑 config/config.yaml 并转到文件的最底部。查找vhost: 行并像这样插入您的新虚拟主机:
ServerName: mydevsite.dev
ServerAlias: mydevsite.dev
DocumentRoot: /var/www/mydevsite.dev
ServerAdmin: webmaster@localhost
然后在www 中创建一个新文件夹并将其命名为与ServerName 或DocumentRoot 文件夹mydevsite.dev 匹配
如果您在 vagrant 运行时添加了新主机,请执行此操作; vagrant provision
如果您在 vagrant box 运行时修改了 config.yaml 的上半部分,请执行此操作; vagrant reload --provision
别忘了更新你主机的hosts文件,把你的vhost指向vagrant的ip。
就是这样。
【讨论】:
vagrant up 之前运行 sudo launchctl load /Library/LaunchDaemons/org.virtualbox.startup.plist。你的方法太复杂了,无法挖掘。我稍后会编辑我的帖子
r8 repo 的几个问题。 onema repo 完全没有问题。使用onema repo 添加额外的虚拟主机只需要编辑Vagrantfile 和hosts 文件。无论如何,刚刚为我的新手朋友发了帖子。
https://github.com/mitchellh/vagrant/issues/1673。米切尔提到了Yeah this is a known "thing." It is not really a problem because it doesn't really cause a problem. Actually, the reason this error message even appears is due to a bug in Ubuntu not checking whether stdin is a TTY, and just assuming it is.
你也可以用这个:
https://github.com/paolooo/vagrant-lamp
你可以去看看。
【讨论】:
最简单直接的 Vagrant 设置
https://github.com/fideloper/Vaprobash
观看 "Apache Virtual Hosts Configuration" 视频以快速开始创建虚拟主机
在安装之前不要忘记取消注释您喜欢的数据库类型:)
奖励:我可以在几秒钟内通过 Sequel Pro 连接到 db 的唯一 vagrant 设置
【讨论】: