在Vagrant中使用简单LAMP的多个vhost

时间:2013-01-20 19:23:08

标签: linux lamp vagrant

我正在尝试通过Vagrant创建一个简单的LAMP,它可以支持存储在/ var / www中的多个网站。这可以通过vhosts来完成。

每个项目都应以.dev

结尾

无法创建每个支持一个项目的构建,每个构建都有一个数据库。

我不能用木偶或厨师做头或尾。我宁愿避免这种情况,但很乐意从回购中克隆它。

我需要一些建议或指出正确的方向。

由于

3 个答案:

答案 0 :(得分:15)


Vagrant LAMP多个虚拟主机 - 更新!


请参阅下面的更新信息

我一直在寻找如何改进网络开发工作流程的方法。我目前正在使用各种工具和应用程序,如主题项目中的LAMP,Webmin和Filezilla等。然后我发现了这个名为 Vagrant 的神奇工具的存在,在用我的项目测试之后我爱上了它并决定将它集成到我当前的本地web开发环境中。因此,我进一步挖掘并使用我选择的基本框Ubuntu 12.04 Precise Pangolin 32-bit搜索了如何使用 Vagrant 创建和设置 Multi Vhosts 设置的可能性。搜索Google会返回很多结果,但我决定点击stackoverflow中的链接并找到了这个问题。我按照Dimitri Kouvdis的回答中提到的链接,这是一个Github回购。我对它进行了测试,遇到了与Dimitri Kouvdis非常相似的问题。但是现在它已经解决了,感谢他的评论,我让它成功了。但是在我寻找理想的 Vagrant Box with Multiple Virtual Support 的过程中,我搜索并测试了几个来自Github的回购,直到我找到了合适的一个,我做了找到一个。我之所以追捕这些回购,是因为我还不知道如何使用Puppet和Chef来配置我自己的开发服务器,这就是原因。

我找到了另一个为我工作的Github回购

感谢此回购

onema / vagrant-lamp-development

https://github.com/onema/vagrant-lamp-development

测试Github Repo Dimitri Kouvdis已经提到过,我遇到了几个问题,在那段时间我停止了工作并决定从Github搜索类似的回购。我发现了几个,并测试了其中一些,包括Nino Paolo&#Repo(https://github.com/paolooo/vagrant-lamp)。我在vagrant up期间特意再次遇到了几个问题。我再次决定搜索另一个,直到我找到并成功设置onema的回购。我最终决定在我的Web开发实践环境中使用并将此解决方案集成到我当前的工作流程中。我开始喜欢onema的回购,因为;

  • 它很容易设置,因为说明很容易理解,特别适合像我这样的新手和自学者。
  • 它有几个文档和示例设置。
  • 最重要的是,与我测试的其他产品相比,添加新的Vhost很容易。
  • 您可以选择并设置本地驱动器中的任何文件夹作为源站点/项目文件夹。
  • 它很简单,没有不必要的(在我的情况下)附加组件(node.js,less等)。我只需要LAMP堆栈,加上vhost支持和phpmyadmin。

如何设置 - 适合初学者和自学者

正如我上面提到的,通过阅读并遵循从Github Repo页面找到的指令,设置很容易(特别是对于像我这样的新手和自学者)。 - https://github.com/onema/vagrant-lamp-development。您可以选择使用下载的zip file或选择使用git clone https://github.com/onema/vagrant-lamp-developmentVagrant文件复制到本地驱动器。

这就是我设置它的方式(在我的* nix机器中,Ubuntu 12.04 x64);

  1. 使用下载的zip文件或git将文件下载到本地驱动器,然后执行基本的Vagrant和VirtualBox设置。阅读Github Page的说明,并执行以下步骤。

  2. 通过我的设置,我已经编辑了Vagrantile了一下。在原始line: 70文件的Vagranfle中,我通过将评论#添加到了
    来禁用了NFS config.vm.synced_folder "~/Sites", "/vagrant", nfs: true

    所以,它现在看起来像这样......

    #config.vm.synced_folder "~/Sites", "/vagrant", nfs: true

    然后评论出来......

    #config.vm.synced_folder "~/Sites", "/vagrant"

    来自orig line: 140

    Vagrantfile

    所以,它现在看起来像这样......

    config.vm.synced_folder "~/Sites", "/vagrant"

    我这样做是因为在我的机器中,在vagrant up期间,它抛出了一些我不理解的NFS相关错误。

  3. 现在,为了这个示例,并从它的Repo Page的示例中创建一个文件夹,您必须将其命名为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。

      现在,为新创建的vhost创建一个简单的启动页面,以便在访问开发人员时确认您的配置是否将您重定向到目标vhost根文件夹您浏览器中的网站。当然,当您的配置正确时,您将看到启动页面。这就是我制作启动页面的方式。

      我创建了一个index.php文件并在其中放入了一些代码,就像这样;

      <?php echo "Success!!! Your wordpress.dev looks fine"; ?>

      因此,当您成功到达您的虚拟主机时,您会收到Success!!! Your wordpress.dev looks fine消息的欢迎

  4. 现在,将您的Vagrant Box的IP地址添加到hosts文件,并将您的开发网站wordpress.dev映射到它,就像这样;

    192.168.50.4 wordpress.dev

    注意:192.168.50.4是Vagrant Box的默认配置IP地址,您可以根据自己的喜好进行更改并更新hosts文件。

    就我而言,我这样说,

    • A

      10.10.10.10 wordpress.dev - 在我的主持人档案中,而<

    • B {
      config.vm.network "private_network", ip: "10.10.10.10"

      在我的Vagrantfile中。

      您可以通过查看Vagrantfile并在此行下方导航 来发现此设置 {br> # Host-Only networking required for nfs shares
      然后从那里更改ip:设置并更新您的hosts文件以匹配IP。

  5. 再次编辑Vagrantfile并添加您的vhost设置,指向您的开发站点文件夹,像这样添加这些代码块;

    :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现在看起来像下面这个;请注意,的{​​{1}}正上方的逗号w和右括号:wordpress的右侧。

    在那里应该有一个逗号,当你添加另一个vhost时,你应该在wordpress的结束大括号}的右边添加另一个逗号。

    }
  6. 您现在可以开始使用Vagrant Box,打开终端窗口

    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 Box VM,然后等待它完全启动。 FIRST INITIAL BOOT UP将需要几分钟。启动成功后,打开浏览器并导航至

    http://wordrpress.dev

    您应该看到之前在步骤3 B 中制作的网络启动消息。

  7. 要添加新虚拟,只需在vagrant up中创建一个新文件夹然后...

    • 重复步骤3B,4A,5

    • 如果您在VM Box 正在运行时对/home/your-home-folder/Sites/new-project-folder进行了更改或添加Vhost,请输入..

      Vagrantfle

      在您的终端中使更改生效。

    • 如果您在VM Box 关闭时对vagrant provision进行了更改或添加了虚拟主机,请输入...

      Vagrantfile

      在您的终端中使更改生效。

      注意:本指南中使用的vagrant up --provision将下载Vagrantfile,您可以通过更改64-bit Precise Pangolin Basebox Base Box将其更改为32-bit Precise Pangolin Basebox {1}}。

      我在我的情况下做了这个,因为我已经下载了我的32位基本框。所以我将其更改为32位,因此我不必再次下载。

      更改...

      Vagrantfile




      Vagrant.configure("2") do |config|
           config.vm.box = "precise64"
           config.vm.box_url = "http://files.vagrantup.com/precise64.box"
      

      DONE!


  8. 其他流浪汉LAMP Repos我已经测试过工作 - 但不一定支持多个虚拟主机

    其他Vagrant LAMP Repos

    如果您想使用R8的Vagrant-LAMP Repo - 用于多种用途的目的

    r8/vagrant-lamp

    以下是添加新Supports Multiple Vhosts

    的方法
    1. 创建一个与您所需的开发者网站名称相匹配的新vhosts文件,例如:.jsonwordpress.dev
      所以看起来像...... vagrant-lamp/data_bags/sites

    2. 编辑新创建的文件vagrant-lamp/data_bags/sites/wordpress.json并添加以下内容(仅供参考);

      wordpress.json
    3. { "id": "wordpress", "host": "wordpress.dev", "aliases": [ "www.wordpress.dev" ] } 内创建一个名为wordpress.dev的新文件夹。所以它看起来像...... vagrant-lamp/public

    4. 修改您的vagrant-lamp/public/wordpress.dev文件以添加并映射hosts
      所以它看起来像这样...... 192.168.33.10``wordpress.dev

    5. 你很高兴去吧......如果盒子被关掉,请向流浪汉开火并输入192.168.33.10 wordpress.dev 如果在执行此过程时打开了该框,则请键入vagrant up --provision

    6. 在此之后,启动浏览器并测试配置,浏览到vagrant provision
      确保在其中放入一些索引文件。

    7. 更新:从Github添加了新的存储库。

      伙计们,我的Linux Mint 13(基于Ubuntu 12.04的)开发盒破了。这就是为什么我不得不重新安装我的操作系统(我的不好......使用虚假RAID并且没有备份)。但是这一次,我使用的是基于Ubuntu 14.0.4 LTS的Linux Mint 17。

      因此,我从头开始重新安装了所有内容,并快速设置了我的Web开发环境。但事实证明,我以前使用vagrant的工作设置不再有效。所以我已经搜索了如何设置另一个可以与Ubuntu 14.04 LTS一起使用的Web开发环境的解决方案。幸运的是,我找到了一个使用另一个名为http://wordpress.dev

      的Github仓库的工作设置

      设置

      所以这就是你设置它的方式。

      • 克隆此回购:cptserver
        或者下载zip文件
      • 浏览到您克隆或下载回购的地方(解压缩zip文件)
      • 打开config / config.yaml并自定义您的需求。在我的情况下,我没有触及任何默认配置,我只是添加了我的虚拟主机。
      • 现在,从您的终端,浏览到您下载的位置或克隆存储库和CPT Server

      那就是它!首次启动需要很长时间。

      添加新的虚拟主机很容易

      只需编辑config / config.yaml并转到文件的最底部。查找vagrant up行并插入您的新虚拟主机:

      vhost:

      然后在 ServerName: mydevsite.dev ServerAlias: mydevsite.dev DocumentRoot: /var/www/mydevsite.dev ServerAdmin: webmaster@localhost 中创建一个新文件夹,并将其命名为与ServerName或DocumentRoot文件夹www匹配

      如果在vagrant正在运行时添加了新主机,那么执行此操作; mydevsite.dev 如果在vagrant box运行时修改config.yaml的上半部分,请执行此操作; vagrant provision

      不要忘记更新主机的hosts文件,将vhost指向vagrant的ip。

      这就是它。

答案 1 :(得分:0)

你也可以使用这个:

https://github.com/paolooo/vagrant-lamp

你可以检查一下。

答案 2 :(得分:0)

最简单直接的Vagrant设置

https://github.com/fideloper/Vaprobash

观看"Apache Virtual Hosts Configuration"视频,快速了解如何创建虚拟主机

在安装之前不要忘记取消注释您喜欢的数据库类型:)

奖金:我可以在几秒钟内通过Sequel Pro连接到数据库的唯一流浪设置