我一直在使用XAMPP很长一段时间,在发现Laravel并发现之后,我非常喜欢它,我也想使用Homestead。我遇到的问题是,我似乎无法运行多个站点。
我尝试了各种各样的东西,但目前的主要问题是,当一个项目正常工作,而其他所有项目在尝试访问其网页时都会出现连接超时。
这些是我使用Homestead
所采取的步骤vagrant box add laravel/homestead
git clone https://github.com/laravel/homestead.git Homestead
Homestead
脚本在bash init.sh
目录中创建Homestead.yaml文件laravel new projectA
composer require laravel/homestead
php vendor/bin/homestead make
laravel new projectB
composer require laravel/homestead
php vendor/bin/homestead make
sudo nano /etc/hosts
=> xxx.xx.xx.10 projecta.app
& xxx.xx.xx.11 projectb.app
vagrant up
现在,我遇到了问题,只有一个项目可以访问。它始终是我呼叫vagrant up
的地方。因此,如果我从项目A中致电vagrant up
,我可以访问http://projecta.app
和http://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当然不起作用。
答案 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
hosts
(其中包含127.0.0.1 project1.local
127.0.0.1 project2.local
文件)。现在,只需一台Homestead虚拟机即可运行任意数量的项目。
答案 1 :(得分:9)
虽然这对我很有帮助,但在接受的答案中有一些重要的步骤。我已经添加了那些必要的步骤。感谢 @Hieu Le 的回答。
我假设您已根据Laravel docs的说明正确安装了您的第一个网站。现在你有另一个laravel网站,你想转移流浪汉。请按照以下步骤操作。
cd
到您要添加的新Laravel项目的目录中。我假设你有所有的laravel文件,它使用MAMP
或任何非流浪的解决方案。vagrant init laravel/homestead
。此命令将在此新项目中添加必要的VagrantFile
。Homestead.yaml
文件。现在按照 @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
cd
上进入您的第一个原始原始项目
目录。vagrant reload --provision
。这将重新加载
流氓机器,以便我们在.yaml
文件中所做的更改生效。您原始项目的数据库将保持不变。vagrant ssh
ls
并确保您可以看到新项目的文件夹。如果它在那里
您已正确配置新网站。http://
即可
DONE。答案 2 :(得分:0)
与here所说的一样,您可以将Homestead直接安装到您的项目中,在您拥有的每个项目的根目录下使用此composer require laravel/homestead --dev
来要求它。现在通过make
命令,您可以将Vagrantfile
和Homestead.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
这个解决方案比配置好得多......而且速度更快......
这就是我的工作