windows下配置Laravel用的开发环境:Homestead

      1. 安装virtualbox
      2. 安装vagrant
        Vagrant 是用来管理虚拟机的工具,支持当前主流的虚拟机系统如 VirtualBox、VMware、AWS 等。Vagrant 的主要作用是提供一个可配置、可移植和复用的软件环境。Vagrant 让你通过编写一个 Vagrantfile 文件来控制虚拟机的启动、虚拟机网络环境的配置、虚拟机与主机间的文件共享,以及启动后自动执行一些配置脚本,如自动执行一个 Shell Script 来安装一些必备的开发工具,如安装配置MySQL、PHP,甚至是自动配置 Nginx 站点。这意味着,在一个多人开发的项目中,你只需要同步 Vagrantfile 文件,就可以保证参与项目的每个人各自的机器上拥有一致的开发环境。
      3. 安装 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这个文件夹删除掉,因为每次的虚拟系统都是重命名叫这个

      4. 安装 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 文件中的一样

      5. 运行 Vagrant
        输入以下命令 

        cd ~/Homestead && vagrant up

        如果有问题,说什么找不到base的,那么打开~目录下的Vagrantfile, config.vm.box = “base”里面的base改成laravel/homestead就行了。
        再下一步

        vagrant ssh

        就能进去了
        在VirtualBox里面用户名和密码都是vagrant也能登录

      6. 最后,在mac或者windows上通过composer在code文件夹里新建好laravel的项目,比如叫lmh的,上面的配置文件的路径再改下,比如
        
        sites:
            - map: homestead.test
              to: /home/vagrant/code/lmh/public/
        

        最终就能在浏览器输入homestead.test访问了

      7. 一些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://laravel-china.org/docs/laravel-development-environment/5.5/development-environment-windows/938

https://laravelacademy.org/post/8671.html

https://laravelacademy.org/post/354.html

https://www.cnblogs.com/think-a-lot/p/7754328.html