转载请注明作者和本文链接!!!
之前配置Homestead搞了一天多才弄明白这个文件字段要怎么配置,特意把里面字段都写了详细的注释,这里尤其要注意folders和sites的配置,直接关系到网站能不能运行。
homestead.yaml中主要字段及其意义
---
ip: "192.168.10.10" #虚拟机的地址
memory: 2048
cpus: 1
provider: virtualbox #虚拟机平台,用virtualbox装的一定要确认这里是virtualbox
authorize: ~/.ssh/id_rsa.pub #ssh的公钥
keys:
- ~/.ssh/id_rsa #ssh的私钥,配置了ssh以后,登录虚拟机可以直接在终端输入homestead ssh进入
folders: #设置文件夹机映射关系
- map: /Users/codingLady/Code #需要映射到虚拟机的本地机器的文件夹
to: /home/vagrant/Code #需要映射到虚拟机中哪个的文件夹
sites: #设置域名和网站的映射关系
- map: blogA.app #网站域名
to: /home/vagrant/Code/blogA/public #Laravel项目对应index.php的位置,以虚拟机的路径表示
- map: blogB.app #网站域名
to: /home/vagrant/Code/blogB/public #Laravel项目对应index.php的位置,以虚拟机的路径表示
这里需要特别说明两个字段,一个是folders,另一个是sites。
folders
folders是要把本地机器某个文件夹映射到虚拟机上,也就是说登录虚拟机以后,查看/home/vagrant/Code文件夹的内容,是和Users/codingLady/Code的内容是一样的。这里需要注意两个地方:
(1)to字段里虚拟机的文件夹一定是已经在虚拟机上存在,如果不存在的话,要先建立一个,要不映射关系是建立不起来的。在虚拟机上建立文件夹的方法是:
#执行以下命令前,请先确认终端的当前目录是homestead的安装目录
homestead up #启动虚拟机
homestead ssh #登录虚拟机,这个时候虚拟机上的路径是/home/vagrant/
#如果folders的to的路径是/home/vagrant/Code,那么就在/home/vagrant/建立Code文件夹
mkdir Code #建立/home/vagrant/Code文件夹
exit #退出虚拟机的登录
(2)一定要检查folders的映射关系是否已经建立,检查的方法如下:
#登录虚拟机,步骤同前
cd Code #进入的是folders-to里面你配置的文件夹,这里是以Code文件夹为例了
ll #查看folders-to配置的文件夹下的内容,如果映射成功的话,和folder-map里的内容是一样的这样
sites
sites的作用是建立域名和网站的路径之间的映射关系,其中map和to的意义见前面.yaml文件的注释,要注意to里填的是从虚拟机访问index.php的路径,并且一定要用ll命令确认这个文件夹是存在并且可以访问的。所以,一般而言,sites-to里配置的是folders-to下的子路径。
配置好homestead.yaml路径以后,记得要执行下面的命令,让修改生效
homestead up --provision #启动虚拟机,让provisioning立即生效
如果不行的话,可以先halt,再启动
homestead halt #关闭虚拟机
homestead up --provision #启动虚拟机,让provisioning立即生效
遇到的问题
问题一:folders正确配置了map和to,但是登录虚拟机以后,ll查看to文件夹,却看不到内容
解决方案:
(1) 检查map的路径是否是本地机器上存在的
(2) 检查to路径是否在虚拟机上存在
(3) 升级virtualBox和vagrant到最新版本(之前就卡在这里,看到有人说更新这俩版本就好了,想起来virtualBox确实也装了N久了,然后一升级还真全好了……)
(4) 是否执行了homestead up --provision,让配置立即生效
问题二:在浏览器中输入sites里map的域名,但是浏览器中却显示No input files specified.
解决方案:
(1) 检查to里面的路径有没有写错
(2) 登录虚拟机,检查to配置的文件夹是否可以访问(这里其实看的就是folders里的映射关系是否建立了,之前folders的映射关系没建立好,所以输入域名后,找不到to配置的文件夹,就出现了错误)
(3) 登录虚拟机,检查to配置的文件夹中是否存在index.php
(4) 是否执行了homestead up --provision,让配置立即生效
祝各位玩Homestead愉快。
参考文档:
1.https://laravel.io/forum/06-04-2014-no-input-file-specified-using-homestead
2.https://laravel.io/forum/05-16-2014-homestead-yaml-folder-mapping
转载请注明作者和本文链接!!!