【问题标题】:Multiple vhosts with simple LAMP in VagrantVagrant 中具有简单 LAMP 的多个虚拟主机
【发布时间】:2013-01-20 19:23:08
【问题描述】:

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

每个项目都应该以 .dev 结尾

无法忍受创建每个构建都支持一个项目和一个数据库的想法。

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

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

谢谢

【问题讨论】:

    标签: linux lamp vagrant


    【解决方案1】:


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


    查看下方的更新信息

    我一直在寻找如何改进我的 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,这就是原因。

    我找到了另一个对我有用的 Github 存储库

    感谢这个回购

    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 因为;

    • 设置很容易,因为说明很容易遵循,特别适合像我这样的新手和自学者。
    • 它有几个文档和示例设置。
    • 最重要的是,与我测试过的其他虚拟主机相比,添加新虚拟主机很容易。
    • 您可以选择并设置本地驱动器中的任何文件夹作为源站点/项目文件夹。
    • 没有不必要的(在我的情况下)附加组件(node.js、less 等),这很简单。我只需要 LAMP 堆栈、虚拟主机支持和 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。在 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 相关的错误。

    3. 现在,为了这个例子,从它的回购页面的例子中,创建一个文件夹,你必须将它命名为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

    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 - 在我的 hosts 文件中,而

      • B

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

        在我的 Vagrantfile 中。

        您可以通过查看 Vagrantfile 内部并在此行下方导航来找到此设置

        # Host-Only networking required for nfs shares

        然后从那里更改ip: 设置并更新您的hosts 文件以匹配IP。

    5. 再次编辑您的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 现在看起来像下面这个;注意:wordpressw 正上方的逗号, 和右大括号}

      里面应该有一个逗号,当你添加另一个虚拟主机时,你应该在 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
      
    6. 您现在已准备好启动 Vagrant Box,打开终端窗口

      ctrl + alt + t 并输入

      cd vagrant-lamp-development 将目录更改为 vagrant-lamp-development 文件夹并输入
      vagrant up

      所以你可以启动 Vagrant Box VM,然后等待它完全启动。 FIRST INITIAL BOOT UP 需要几分钟时间。 成功启动后,打开浏览器并导航至

      http://wordrpress.dev

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

    7. 要添加新虚拟主机,只需在 /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 BaseboxVagrantfile 更改配置。

        我这样做了,因为我已经下载了我的 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"
        

        完成!


    我测试过的其他 Vagrant LAMP 存储库有效 - 但不一定支持多个虚拟主机

    其他 Vagrant LAMP 存储库

    如果你想使用 R8 的 Vagrant-LAMP 回购 - 用于多 Vhosts 目的

    r8/vagrant-lamp

    这里是如何添加一个新的vhosts

    1. 创建一个新的.json 文件匹配您所需的开发站点名称,例如:wordpress.dev in
      vagrant-lamp/data_bags/sites

      所以它应该看起来像...
      vagrant-lamp/data_bags/sites/wordpress.json

    2. 编辑新创建的文件wordpress.json并添加以下内容(仅作为示例);

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

    4. 编辑您的 hosts 文件以添加和映射 192.168.33.10``wordpress.dev
      所以它应该看起来像这样...... 192.168.33.10 wordpress.dev

    5. 你很高兴...启动 vagrant 并输入 vagrant up --provision,如果框已关闭
      如果在您执行此过程时该框已打开,请输入 vagrant provision

    6. 之后,启动浏览器并测试配置,浏览至http://wordpress.dev
      确保在其中放置一些索引文件。

    更新:添加了来自 Github 的新存储库。

    伙计们,我的 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 存储库的工作设置@

    设置

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

    • 克隆这个仓库:cptserver
      或下载 zip 文件
    • 浏览到您克隆或下载 repo 的位置(解压缩 zip 文件)
    • 打开 config/config.yaml 并自定义您想要的方式。就我而言,我没有触及任何默认配置,我只是添加了我的虚拟主机。
    • 现在从您的终端浏览到您下载或克隆 repo 的位置和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。

    就是这样。

    【讨论】:

    • 嗨,我读了你的帖子,虽然我很难理解所有内容。注意到您遇到了 nfs 错误的问题,NFS 对性能至关重要。它是 Virtualbox 4.3+ 的错误,您应该在运行 vagrant up 之前运行 sudo launchctl load /Library/LaunchDaemons/org.virtualbox.startup.plist。你的方法太复杂了,无法挖掘。我稍后会编辑我的帖子
    • 真的很简单,我只是一步一步地解释,我的帖子真的想针对像我这样的新手和自学者。在等待您的评论时,我测试了几个 repo,我遇到了 r8 repo 的几个问题。 onema repo 完全没有问题。使用onema repo 添加额外的虚拟主机只需要编辑Vagrantfilehosts 文件。无论如何,刚刚为我的新手朋友发了帖子。
    • @GaryLising lising 在使用 r8 的 vagrant box 时收到这个红色错误提示 default: stdin: is not a tty 你知道吗?谢谢。
    • @ErdemEce - 无论您的屏幕上出现什么错误,您的设置是否有效?如果它有效,您就不必为错误所困扰。你在 ubuntu 上吗?
    • @ErdemEce,看看这里。 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.
    【解决方案2】:

    你也可以用这个:

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

    你可以去看看。

    【讨论】:

      【解决方案3】:

      最简单直接的 Vagrant 设置

      https://github.com/fideloper/Vaprobash

      观看 "Apache Virtual Hosts Configuration" 视频以快速开始创建虚拟主机

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

      奖励:我可以在几秒钟内通过 Sequel Pro 连接到 db 的唯一 vagrant 设置

      【讨论】:

        猜你喜欢
        • 2016-03-31
        • 2014-09-06
        • 1970-01-01
        • 2018-11-07
        • 2011-02-26
        • 2011-12-15
        • 2016-07-03
        • 2015-06-22
        • 2017-04-07
        相关资源
        最近更新 更多