6

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

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

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

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

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

谢谢

4

3 回答 3

15


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


请参阅下面的更新信息

我一直在寻找如何改进我的 Web 开发工作流程的方法。我目前在主题项目等中使用各种工具和应用程序,例如 LAMP、Webmin 和 Filezilla。然后我发现了这个名为Vagrant的神奇工具的存在,在用我的项目对其进行测试后,我爱上了它,并决定将它集成到我当前的本地 Web 开发环境中。因此,我进一步挖掘并搜索了如何使用我选择的基本框使用Vagrant创建和设置Multi Vhosts设置的可能性。搜索 Google 会返回许多结果,但我决定点击 stackoverflow 中的链接并找到这个问题。我按照中提到的链接Ubuntu 12.04 Precise Pangolin 32-bitDimitri Kouvdis的答案,这是一个 Github Repo。我已经对其进行了测试,并遇到了与Dimitri Kouvdis也遇到的非常相似的问题。但是现在已经解决了,多亏了他的评论,我才成功。但是在我寻找具有多个虚拟支持的理想 Vagrant Box 的过程中,我从 Github 搜索并测试了几个存储库,直到找到适合我的一个,并且我确实找到了一个。我寻找这些存储库的原因是我还不知道如何使用 Puppet 和 Chef 来配置我自己的 Dev Server,这就是原因。

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

感谢这个回购

onema / vagrant-lamp-development

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

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

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

如何设置 - 对于像我这样的初学者和自学者

正如我上面提到的,通过阅读并遵循从它的 Github Repo 页面中找到的说明,设置很容易(特别是对于像我这样的新手和自学者)。- https://github.com/onema/vagrant-lamp-development。您可以选择使用下载的zip 文件或选择用于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"

    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.

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

      我创建了一个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

      # Host-Only networking required for nfs shares

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

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

    :wordpress => {
       :name => "wordpress",
       :host => "wordpress.dev", 
       :aliases => ["wordpress.dev"],
       :docroot => "/wordpress.dev"
    }
    



    当您将代码添加到 origVagrantfile时,它应该如下所示;

     :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现在看起来像下面这个;注意右花括号右上方,w逗号。里面应该有一个逗号,当你添加另一个虚拟主机时,你应该在 wordpress的右花括号右侧添加另一个逗号。: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 虚拟机,然后等待它完全启动。FIRST INITIAL BOOT UP需要几分钟时间。成功启动后,打开浏览器并导航到

    http://wordrpress.dev

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

  7. 要添加新虚拟主机,只需在其中创建一个新文件夹/home/your-home-folder/Sites/new-project-folder,然后...

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

    • 如果您Vagrantfle在 VM Box运行时进行了更改或添加了 Vhost,请在终端中键入 ..

      vagrant provision

      以使更改生效。

    • 如果您Vagrantfile在 VM Box关闭时进行了更改或添加了虚拟主机,请在您的终端中键入 ...

      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"
      

      完毕!


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

其他 Vagrant LAMP 存储库

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

r8/流浪灯

以下是如何添加新的vhosts

  1. 创建一个.json与您所需的开发站点名称匹配的新文件,例如:wordpress.devin
    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. wordpress.dev在里面创建一个名为的新文件夹vagrant-lamp/public
    所以它看起来像......
    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 开发环境的解决方案。幸运的是,我找到了一个使用另一个 Github repo 的工作设置,称为CPT Server

设置

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

  • 克隆这个 repo: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。

就是这样了。

于 2013-11-27T13:39:05.803 回答
0

你也可以使用这个:

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

你可以检查一下。

于 2013-08-10T09:39:54.857 回答
0

最简单直接的 Vagrant 设置

https://github.com/fideloper/Vaprobash

观看“Apache 虚拟主机配置”视频以快速开始创建虚拟主机

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

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

于 2015-02-09T18:20:26.267 回答