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

Mus*_*abe 28 php vagrant laravel homestead

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

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

这些是我使用Homestead的步骤

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

现在,我遇到了问题,只有一个项目可以访问.它始终是我打电话的地方vagrant up.因此,如果我vagrant up从Project AI 调用可以访问http://projecta.apphttp://projectb.app超时.可悲的是,相反的方式.

这是我的 vagrant global-status

id       name    provider   state   directory                           
------------------------------------------------------------------------
fc6fadb  default virtualbox running /Users/mknb/work/projectA
Run Code Online (Sandbox Code Playgroud)

我以为我会vagrant upprojectB目录中再做另一个,但当然不行.

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

我没有修改Homestead.yaml除IP和domainname homestead.app=>之外的其他内容projecta.app

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

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

Hie*_* Le 37

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

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

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

编辑folders属性~/.homestead/Homestead.yaml以与VM共享两个项目的代码:

folders:
    - map: ~/pj1
      to: /path/to/project1
    - map: ~/pj2
      to: /path/to/project2
Run Code Online (Sandbox Code Playgroud)

编辑sites属性~/.homestead/Homestead.yaml以使Nginx启用两个站点的域:

sites:
    - map: project1.local
      to: /home/vagrant/pj1/public
    - map: project2.local
      to: /home/vagrant/pj2/public
Run Code Online (Sandbox Code Playgroud)

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

127.0.0.1 project1.local
127.0.0.1 project2.local
Run Code Online (Sandbox Code Playgroud)
  • 运行vagrant up在你克隆宅基代码里面(其中包含的文件夹init.sh的文件).

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


hhs*_*diq 10

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

我假设您已按照Laravel文档的说明正确安装了您的第一个站点.现在你有另一个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
    
    Run Code Online (Sandbox Code Playgroud)

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

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