【Homestead Master】系列是Laravel底层核心技术实战揭秘这一课程里的第一章,因为考虑到该章内容学员们可能要经常来回查阅,同时也为了提高课程更新速度,所以这一章以文字的形式发布在此。

每次在yaml文件里添加站点后,比较烦的一点就是还得去手动修改hosts文件,将ip及对应的hostname加进去,更烦的是在windows系统上,hosts文件的路径太“短”了,记不住。

其实yaml文件里既然已经有ip及相应的hostname了,可以自动化的,装一个叫vagrant-hostsupdater的插件,它就可以自动给你去修改添加hosts,执行:

vagrant plugin install vagrant-hostsupdater

过程:

$ vagrant plugin install vagrant-hostsupdater
Installing the 'vagrant-hostsupdater' plugin. This can take a few minutes...
Installed the plugin 'vagrant-hostsupdater (1.0.2)'!

装了以后,再vagrant up或者reload,就会看到这样的提示:

==> default: [vagrant-hostsupdater] Checking for host entries
==> default: [vagrant-hostsupdater]   found entry for: 192.168.10.10 taskmanager.app
==> default: [vagrant-hostsupdater] Writing the following entries to (C:/Windows/system32/drivers/etc/hosts)
==> default: [vagrant-hostsupdater]   192.168.10.10  beanstalk.app  # VAGRANT: f3f48d68bd4db2c3817039aac37b80c7 (default) / de2a529b-0719-4f01-855c-0168fe5db83c
==> default: [vagrant-hostsupdater] This operation requires administrative access. You may skip it by manually adding equivalent entries to the hosts file.
==> default: Setting hostname...

可以看到它能识别到我hosts的路径 (C:/Windows/system32/drivers/etc/hosts),能识别出已有的host(found entry for: 192.168.10.10 taskmanager.app)。如果存在你yaml文件里有,但hosts文件里没有的本地站点名,它就会自动给你写进去,可以看到上面提示给自动写入了一个beanstalk的host,这个时候打开你的hosts文件,就可以看到多了一行:

192.168.10.10  beanstalk.app  # VAGRANT: f3f48d68bd4db2c3817039aac37b80c7 (default) / de2a529b-0719-4f01-855c-0168fe5db83c

这个hostupdater会在你每次up(启动)、resume(唤醒)、reload(重启)的时候自动添加hosts,然后在你每次halt(关机), destroy(销毁)和suspend(睡眠)的时候自动删除掉它给你添加的hosts,当然你也可以通过进一步配置,让它不自动删除,其实不影响什么。

好了,赶紧把hosts里相关的本地站点都删了吧,然后忘掉它。下次再添加homestead站点,修改完yaml文件,就可以直接up了。