VirtualBox 是 Oracle 的虚拟机软件;
Vagrant 提供命令行接口,允许自动化安装虚拟机,因为是脚本编写的 provision 文本文件,给共享虚拟机配置提供了可能,Homestead 构建在 Vagrant 之上。
Laravel Homestead 实际是一个打包好各种 Laravel 开发所需软件和工具的 Vagrant 盒子(关于 Vagrant 盒子的释义请参考 Vagrant 官方文档),该盒子为我们提供了一个优秀的开发环境,有了它,我们不再需要在本地环境安装 PHP、Composer、Nginx、MySQL、Memcached、Redis、Node 等其它工具软件,我们也完全不用再担心误操作搞乱操作系统 —— 因为 Vagrant 盒子是一次性的,如果出现错误,可以在数分钟内销毁并重新创建该 Vagrant 盒子!
一、安装 VirtualBox / VMWare 与 Vagrant
在启动你的 Homestead 环境之前,你必须先安装 VirtualBox 和 Vagrant. 两套软件在各平台都有提供易用的可视化安装程序。
二、安装 Homestead Vagrant 盒子
当 VirtualBox / VMware 和 Vagrant 安装完成后,你可以在终端机以下列命令将 laravel/homestead 封装包安装进你的 Vagrant 安装程序中。下载封装包会花你一点时间,时间长短将依据你的网络速度决定:
1 |
vagrant box add laravel/homestead |
如果这个命令失败了, 你可能安装的是一个老版本的 Vagrant 需要指定一个完整的 URL:
1 |
vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead |
运行命令会列出一个选择列表,选择 virtualbox
对应选项即可,然后进入漫长的下载等待,也许这个过程并不理想,如果一直提示网络超时的话只能去 Vagrant Cloud 下载所需版本的 Homestead
,通过这种方式下载的话需要手动将其添加到 Vagrant。为此,我们需要创建一个名为 metadata.json(这个文件放在你下载的virtualbox.box同一目录下) 文件,文件内容如下:
1 2 3 4 5 6 7 8 9 10 |
{ "name": "laravel/homestead", // 名称尽量不要修改,如果修改了,vagrnat up 启动的时候会报错:box 'laravel/homestead' could not be found, 然后会自动下载0.4.0版本。 "versions": [{ "version": "6.3.0", // 你下载的 virtualbox.box 版本号 "providers": [{ "name": "virtualbox", "url": "C:/download/virtualbox.box" // 这里是你下载的virtualbox.box 路径。 }] }] } |
然后终端进入virtualbox.box所在目录:执行 vagrant box add metadata.json。最后会显示box安装成功。执行: vagrant box list, 可以看到: laravel/homestead (virtualbox, 6.3.0), 如果出现laravel/homestead (virtualbox, 0),请重装。
下面的安装按照官网教程就没什么问题了。
三、安装 Homestead
你可以简单地通过手动复制资源库的方式来安装 Homestead。将资源库复制至你的 "home" 目录中的 Homestead
文件夹,如此一来 Homestead 封装包将能提供主机服务给你所有的 Laravel(及 PHP)应用:
1 |
git clone https://github.com/laravel/homestead.git Homestead |
一旦你克隆完 Homestead 仓库,从 Homestead 目录中执行 bash init.sh
命令来创建 Homestead.yaml
配置文件:
1 |
bash init.sh |
在Windows中需要执行init.bat
,详细教程也可以参考:Homestead快速入门。
四、配置 Homestead
homestead.yaml配置项含义和具体配置方法可参见Homestead配置。
如下示例是我的Homestead.yaml
文件配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
--- ip: "192.168.10.10" # 虚拟机的地址 memory: 2048 # 分配内存(KB) cpus: 1 # cpu provider: virtualbox # 虚拟机平台 authorize: ~/.ssh/id_rsa.pub # ssh公钥 keys: - ~/.ssh/id_rsa # ssh的私钥,配置了ssh以后,登录虚拟机可以直接在终端输入homestead ssh进入 # 共享文件夹 folders: - map: C:\hosts\Apache24\htdocs\laravel # 需要映射到虚拟机的本地机器的文件夹 to: /home/vagrant/code # 需要映射到虚拟机中哪个的文件夹 # 设置域名和网站的映射关系 sites: - map: homestead.test # 网站域名 to: /home/vagrant/code/public # 项目对应index.php的位置 databases: - homestead # ports: # - send: 50000 # to: 5000 # - send: 7777 # to: 777 # protocol: udp # blackfire: # - id: foo # token: bar # client-id: foo # client-token: bar # zray: # If you've already freely registered Z-Ray, you can place the token here. # - email: foo@bar.com # token: foo # Don't forget to ensure that you have 'zray: "true"' for your site. |
配置好 Homestead.yaml
文件后,在 Homestead
目录下运行 vagrant up
命令,Vagrant 将会启动虚拟机并自动配置共享文件夹以及 Nginx 站点。
