使用vagrant和宅基地为多个站点和每个项目安装

时间:2015-06-30 13:13:39

标签: php laravel vagrant homestead

我一直在使用XAMPP很长一段时间,在发现Laravel并发现之后,我非常喜欢它,我也想使用Homestead。我遇到的问题是,我似乎无法运行多个站点。

我尝试了各种各样的东西,但目前的主要问题是,当一个项目正常工作,而其他所有项目在尝试访问其网页时都会出现连接超时。

这些是我使用Homestead

所采取的步骤
  1. 安装VirtualBox
  2. 安装Vagrant
  3. 使用vagrant box add laravel/homestead
  4. 添加宅基地
  5. 克隆存储库git clone https://github.com/laravel/homestead.git Homestead
  6. 使用Homestead脚本在bash init.sh目录中创建Homestead.yaml文件
  7. 创建新项目laravel new projectA
  8. 要求宅基地composer require laravel/homestead
  9. 生成Vagrantfile php vendor/bin/homestead make
  10. 修改Homestead.yaml,使其以10结尾的IP
  11. 创建另一个项目laravel new projectB
  12. 要求宅基地composer require laravel/homestead
  13. 生成Vagrantfile php vendor/bin/homestead make
  14. 修改Homestead.yaml以获得以11
  15. 结尾的IP
  16. 将这两个网站添加到主机文件sudo nano /etc/hosts => xxx.xx.xx.10 projecta.app& xxx.xx.xx.11 projectb.app
  17. 从两个目录之一vagrant up
  18. 中启动vagrant

    现在,我遇到了问题,只有一个项目可以访问。它始终是我呼叫vagrant up的地方。因此,如果我从项目A中致电vagrant up,我可以访问http://projecta.apphttp://projectb.app次。可悲的是,相反的是相反。

    这是我的vagrant global-status

    id       name    provider   state   directory                           
    ------------------------------------------------------------------------
    fc6fadb  default virtualbox running /Users/mknb/work/projectA
    

    我以为我会从vagrant up目录中再做一个projectB但当然不行。

    我不想使用全球的Homestead,因为Laravel说,有可能安装per project,所以我该如何实现呢?您需要更多信息吗?

    除了IP和域名Homestead.yaml =>之外,我没有修改homestead.app projecta.app

    使用Homestead似乎全局安装相当容易,因为我只需要向Homestead.yaml添加更多站点,但正如我所说,我希望每个项目安装一次。有人可以帮忙吗?

    从Homestead目录启动vagrant当然不起作用。

4 个答案:

答案 0 :(得分:35)

通过您的方式使用Homestead,您可以为每个项目创建一个虚拟机。因此,VirtualBox无法从主机转发HTTP请求以获取所有虚拟机。每次只能运行一台机器(因此,一个项目)。

要使用Homestead运行多个项目,您可以执行以下操作:

  • 克隆家园git clone https://github.com/laravel/homestead.git Homestead
  • Homestead文件夹中,运行bash init.sh

编辑folders的{​​{1}}属性,与VM共享两个项目的代码:

~/.homestead/Homestead.yaml

修改folders: - map: ~/pj1 to: /path/to/project1 - map: ~/pj2 to: /path/to/project2 的{​​{1}}属性,使Nginx启用两个网站的域名:

sites

编辑您的~/.homestead/Homestead.yaml文件以转发这些域名为localhost

sites:
    - map: project1.local
      to: /home/vagrant/pj1/public
    - map: project2.local
      to: /home/vagrant/pj2/public
  • 在您克隆其中的Homestead代码的文件夹中运行hosts(其中包含127.0.0.1 project1.local 127.0.0.1 project2.local 文件)。

现在,只需一台Homestead虚拟机即可运行任意数量的项目。

答案 1 :(得分:9)

虽然这对我很有帮助,但在接受的答案中有一些重要的步骤。我已经添加了那些必要的步骤。感谢 @Hieu Le 的回答。

我假设您已根据Laravel docs的说明正确安装了您的第一个网站。现在你有另一个laravel网站,你想转移流浪汉。请按照以下步骤操作。

  1. cd到您要添加的新Laravel项目的目录中。我假设你有所有的laravel文件,它使用MAMP或任何非流浪的解决方案。
  2. 运行vagrant init laravel/homestead。此命令将在此新项目中添加必要的VagrantFile
  3. 打开第一个原始项目文件的目录并打开它 编辑器中的Homestead.yaml文件。
  4. 现在按照 @Hieu Le 在接受的答案中定义的步骤进行操作 修改.yaml文件

    folders:
         - map: ~/pj1
           to: /path/to/project1
         - map: ~/pj2
           to: /path/to/project2
    
    sites:
        - map: project1.local
          to: /home/vagrant/pj1/public
        - map: project2.local
          to: /home/vagrant/pj2/public
    
         

    编辑您的hosts文件以将这些域转发到localhost

    127.0.0.1 project1.local
    127.0.0.1 project2.local
    
  5. 在终端cd上进入您的第一个原始原始项目 目录。
  6. 运行命令vagrant reload --provision。这将重新加载 流氓机器,以便我们在.yaml文件中所做的更改生效。您原始项目的数据库将保持不变。
  7. 运行vagrant ssh
  8. 运行ls并确保您可以看到新项目的文件夹。如果它在那里 您已正确配置新网站。
  9. 点击新网站的网址,添加http://即可 DONE。

答案 2 :(得分:0)

here所说的一样,您可以将Homestead直接安装到您的项目中,在您拥有的每个项目的根目录下使用此composer require laravel/homestead --dev来要求它。现在通过make命令,您可以将VagrantfileHomestead.yaml文件生成到项目的根目录中。

  • Mac / Linux中

    php vendor/bin/homestead make
    
  • 视窗:

    vendor\bin\homestead make
    

在每个项目根目录中,您将有一个Homestead.yaml文件进行编辑:

  • 项目-A

    ip: "192.168.10.10"
    ...
    folders:
        - map: "~/Code/projecta"
          to: "/home/vagrant/projecta"
    sites:
        - map: project.a
          to: "/home/vagrant/projecta/public"
    
  • 项目-B

    ip: "192.168.10.10"
    ...
    folders:
        - map: "~/Code/projectb"
          to: "/home/vagrant/projectb"
    sites:
        - map: project.b
          to: "/home/vagrant/projectb/public"
    

将此添加到/etc/hosts

    192.168.10.10 project.a
    192.168.10.10 project.b

然后你必须cd到每个项目的根和vagrant up。 现在,如果您从每个项目中vagrant ssh,您将在VM环境中拥有该项目。

答案 3 :(得分:0)

有一个快捷命令来代理您要添加的网站..

无需弄乱您的Homestead.yaml文件并重新配置您的流浪盒......

这适用于全球和每个项目的安装

请确保您是否要添加其他项目......

您将(整个项目)添加到共享文件夹中 在您的Homestead.yaml中声明

假设您的共享文件夹是 C:/Users/MYACCOUNT/Codes

在该文件夹中添加另一个项目 laravel new homestead.app

然后

假设你的家园里有ssh 类型 a。)如果你使用nginx

serve homestead.app /home/Vagrant/Code/homestead/public

b。)如果你使用hhvm serve-hhvm homestead.app /home/Vagrant/Code/homestead/public 只需将您的域名和路径更改为项目的公用文件夹

即可

然后以管理员身份编辑您的etc / hosts文件

您在Homestead.yaml中定义的IP地址

通常默认值为192.168.10.10

使用它而不是127.0.0.1

为什么呢?因为如果你使用127.0.0.1你的网址会是这样的 homestead.app:8000

如果您使用Homestead.yaml中的IP地址

192.168.10.10 homestead.app

您可以在没有端口8000的情况下访问您的站点 并使用homestead.app

这个解决方案比配置好得多......而且速度更快......

这就是我的工作