windows下配置Laravel用的开发环境:Homestead
-
-
- 安装virtualbox
- 安装vagrant
Vagrant 是用来管理虚拟机的工具,支持当前主流的虚拟机系统如 VirtualBox、VMware、AWS 等。Vagrant 的主要作用是提供一个可配置、可移植和复用的软件环境。Vagrant 让你通过编写一个 Vagrantfile 文件来控制虚拟机的启动、虚拟机网络环境的配置、虚拟机与主机间的文件共享,以及启动后自动执行一些配置脚本,如自动执行一个 Shell Script 来安装一些必备的开发工具,如安装配置MySQL、PHP,甚至是自动配置 Nginx 站点。这意味着,在一个多人开发的项目中,你只需要同步 Vagrantfile 文件,就可以保证参与项目的每个人各自的机器上拥有一致的开发环境。 - 安装 Homestead Vagrant 盒子
在CMD或者GIT BASH里面输入以下命令:vagrant box add laravel/homestead
会开始下载,贼慢,因此截取里面的一个地址,比如我当时的https://vagrantcloud.com/laravel/boxes/homestead/versions/6.3.0/providers/virtualbox.box,把这个地址倒入迅雷,很快就好了。例如是存在D盘的。下面就是把这个下载下来的virtualbox.box倒入,输入以下命令
vagrant box add laravel/homestead d:\virtualbox.box
但是这种本地的box装载进去后的话,以后vagrant up的时候还是会碰到说找不到box的问题,原因就是版本问题,具体解析见这里:https://stackoverflow.com/questions/34946837/box-laravel-homestead-could-not-be-found。说的极其明晰,因此,下载下来的box要装进去用下面的另一种办法:
另一种办法,在virtualbox.box的同一个文件夹下新建一个metadata.json,输入以下内容
{ "name": "laravel/homestead", "versions": [{ "version": "6.3.0", "providers": [{ "name": "virtualbox", "url": "file:///d:virtualbox.box" }] }] }
上面的version查看下载链接里面的version,据此修改。 然后输入命令
vagrant box add d:\metadata.json
这样就OK了。
在mac里面的话,file:///d:virtualbox.box改为./virtualbox.box就行。这里假设virtualbox.box和metadata.json一起放在homestead文件夹下的,因为vagrant就是要在这里运行的嘛。然后一样输入命令vagrant box add metadata.json
就行了。
好了以后,输入命令
vagrant box list
查看列表判断有没有添加成功。如果第一次不是用metadata.json安装的那个version=0的也在里面,那么最好删除一下,命令如下:
vagrant box remove laravel/homestead --box-version 0
如果以前有安装过homestead版本现在重新安装的话,在列表里按以上方法删除以后,记得去VirtualBox VMs这个文件夹下把原来的homestead-7这个文件夹删除掉,因为每次的虚拟系统都是重命名叫这个
- 安装 Homestead
在git bash下输入以下命令cd ~ git clone https://github.com/laravel/homestead.git
在window环境下的话,就在用户根目录C:\Users\Administrator下运行这个命令就行.
好了以后再输入
cd ~/Homestead git checkout bash init.sh
(以上如果在CMD中,最后一行中的bash貌似不用打,直接输入init.sh就行。并且,第一个的cd ~这是用在mac里面的,一般的windows就改为用户目录,比如C:\Users\Administrator\。在mac中的Homestead.yaml可以不用改。
在windows中的Homestead.yaml我改了下才能用。如下:
authorize: C:\Users\Administrator\.ssh\id_rsa.pub keys: - C:\Users\Administrator\.ssh\id_rsa # 上面都是git配置文件的位置 folders: - map: C:\Users\Administrator\code # 本地的源代码位置 to: /home/vagrant/code # 映射到虚拟机上的源代码位置 sites: - map: homestead.test # 访问的域名名字 to: /home/vagrant/code/lmh/public/ # 在虚拟机上的网站根目录
Homestead.yaml 文件中的 folders 属性列出了所有主机和 Homestead 虚拟机共享的文件夹。
sites: - map: homestead.test //这里写出试验用的域名 to: /home/vagrant/code/public
不要忘记把 Nginx 站点配置中的域名添加到本地机器上的 hosts 文件中,该文件会将对本地域名的请求重定向到 Homestead 虚拟机,在 Mac 或 Linux上,该文件位于 /etc/hosts,在 Windows 上,位于 C:\Windows\System32\drivers\etc\hosts,添加方式如下:增加一行
192.168.10.10 homestead.test
这里的IP要和Homestead.yaml 文件中的一样
- 运行 Vagrant
输入以下命令cd ~/Homestead && vagrant up
如果有问题,说什么找不到base的,那么打开~目录下的Vagrantfile, config.vm.box = “base”里面的base改成laravel/homestead就行了。
再下一步vagrant ssh
就能进去了
在VirtualBox里面用户名和密码都是vagrant也能登录 - 最后,在mac或者windows上通过composer在code文件夹里新建好laravel的项目,比如叫lmh的,上面的配置文件的路径再改下,比如
sites: - map: homestead.test to: /home/vagrant/code/lmh/public/
最终就能在浏览器输入homestead.test访问了
- 一些vagrant常用命令:$ vagrant init # 初始化$ vagrant up # 启动虚拟机
$ vagrant halt # 关闭虚拟机
$ vagrant reload # 重启虚拟机
$ vagrant ssh # SSH 至虚拟机
$ vagrant suspend # 挂起虚拟机
$ vagrant resume # 唤醒虚拟机
$ vagrant status # 查看虚拟机运行状态
$ vagrant destroy # 销毁当前虚拟机#box管理命令
$ vagrant box list # 查看本地box列表
$ vagrant box add # 添加box到列表$ vagrant box remove # 从box列表移除
-
参考文件:
https://laravel.com/docs/5.7/homestead
https://laravelacademy.org/post/8671.html