自己安装了一篇,第一次接触,确实比较繁琐。记性越来越不好了,为了防止重复造轮子,再次记录过程。
操作系统:macOS Sierra
工具:(1)VirtualBox 5.2.10
(2)Vagrant macOS 64-bit
(3)Homestead Vagrant 盒子 laravel/homesterad 5.2.0
(4)Homestead
(5)Laravel 5.6
传送门
选择对应的版本,下载安装。
传送门
选择本机对应的操作系统,下载安装
传送门
命令如下
git clone https://github.com/laravel/homestead.git Homestead
cd Homestead
初始化
// Mac/Linux...
bash init.sh
// Windows...
init.bat
正常情况下,这个时候会在Homestead目录下生成Homestead.yaml
Homestead.yaml是配置文件,配置内容如下:
Laravel学院传送门
设置 Provider
Homestead.yaml
文件中的 provider
键表示使用哪个 Vagrant 提供者:virtualbox
、vmware_fushion
、 vmware_workstation
、parallels
或 hyperv
,你可以将其设置为自己选择的提供者,当然对大部分人来说也没得选:
provider: virtualbox
配置共享文件夹
Homestead.yaml
文件中的 folders
属性列出了所有主机和 Homestead 虚拟机共享的文件夹,一旦这些目录中的文件有了修改,将会在本地和 Homestead 虚拟机之间保持同步,如果有需要的话,你可以配置多个共享文件夹:
folders:
- map: ~/Development #本地环境,不要复制我
to: /home/vagrant/Code #虚拟机环境,不要复制我
如果你只是创建了很少的站点,使用一般的映射就够了。不过,随着站点数量的增加,你就会遇到性能问题,尤其是在包含大量文件的低端机器或项目中,性能问题可能会非常明显。如果你不幸遇到了这个问题,可以尝试映射每个项目到各自的 Vagrant 文件夹:
folders:
- map: ~/code/project1
to: /home/vagrant/code/project1
- map: ~/code/project2
to: /home/vagrant/code/project2
如果要开启 NFS,只需简单添加一个标识到同步文件夹配置:
folders:
- map: ~/Development
to: /home/vagrant/Code
type: "nfs"
注:使用 NFS 的话,需要考虑安装 vagrant-bindfs 插件。该插件可用于在 Homestead 盒子中为文件和目录维护正确的用户/组权限。
你还可以通过 options
传递其他 Vagrant 支持的同步文件夹选项:
folders:
- map: ~/code
to: /home/vagrant/code
type: "rsync"
options:
rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
rsync__exclude: ["node_modules"]
配置 Nginx 站点
对 Nginx 不熟?没关系!通过 sites
属性你可以方便地将“域名”映射到 Homestead 虚拟机的指定目录,Homestead.yaml
中默认已经配置了一个示例站点。和共享文件夹一样,你可以配置多个站点:
sites:
- map: homestead.app
to: /home/vagrant/Code
如果你是在 Homestead 盒子启动之后进行了上述修改,需要运行 vagrant reload --provision
更新虚拟机上的 Nginx 配置。
Hosts文件
不要忘记把 Nginx 站点配置中的域名添加到本地机器上的 hosts
文件中,该文件会将对本地域名的请求重定向到 Homestead 虚拟机,在 Mac 或 Linux上,该文件位于 /etc/hosts
,在 Windows 上,位于 C:\Windows\System32\drivers\etc\hosts
,添加方式如下:
192.168.10.10 homestead.test
确保 IP 地址和你的 Homestead.yaml
文件中列出的一致,一旦你将域名添加到 hosts
文件,就可以在浏览器中通过该域名访问站点了:
http://homestead.test
注:在真正可以访问之前还需要通过 Vagrant 启动虚拟机上的 Homestead 盒子。
官方是用一句代码搞定的,如下:
vagrant box add laravel/homestead
我反正搞不定,只能用迅雷大法下载离线包进行安装。5.2.0 版本 传送门
https://app.vagrantup.com/laravel/boxes/homestead/versions/5.2.0/providers/virtualbox.box
目前(18年5月5日)最新版为6.0.0,如果需要下载最新版,可以将上面的5.2.0,替换成6.0.0。可以使用迅雷下载
用此方法,需要手动添加,命令如下,~/Downloads/virtualbox.box为目录地址,根据当前环境更改
vagrant box add laravel/homestead ~/Downloads/virtualbox.box
终端中显示绿色的box:Successfully add box laravel/homestead (v0) for 'virtualbox',就表示成功。可以使用下面的命令查看,如果出现 laravel/homestead (virtualbox , 0)就表示成功。
vagrent box list
注意:因为是手工添加,肯定会比自动的麻烦。上面添加成功之后,还得有下面的步骤,不能跳过。
Homestead目录创建metadata.json文件,内容如下
{
"name": "laravel/homestead", //盒子名称
"versions":
[
{
"version": "5.2.0", //版本号
"providers": [
{
"name": "virtualbox",
"url": "virtualbox.box" //盒子所在路径
}
]
}
]
}
注意:这里,我把virtualbox.box放到了Homestead目录下,生成以上文件后,再当前Homestead目录下,执行
vagrant box add metadata.json
即可添加带有版本号的盒子,可通过 vagrant box list 查看, 最后通过 vagrant up 即可载入开启虚拟机。
其它方法传送门
执行vagrant up,开启虚拟主机,初次执行时间会有点长。
注意:(1)如果第二行显示找不到 laravel/homestead ,那么程序会自动调用远端链接进行下载。这说明上面2.4那步加载盒子失败了,请重新尝试加载盒子。这边正常的话是读取本地的盒子,30s算很长了,不要傻等。
(2)也有可能提示目录映射不正确,请排查Homestead.yaml文件的配置
显示下面的信息,并执行完毕后,就表示开启成功。
homestead-7:Successfully add box laravel/homestead (v5.2.0) for 'virtualbox'!
之前一直很迷惑,上面的步骤到底是干嘛的,我到底有没有安装了Laravel,甚至还去本地环境下载了Laravel用于映射到虚拟机中。。
解答:上面安装了一个虚拟机,然后配置好了php等一系列环境,然后,进入这个虚拟机,开始下载Laravel,以后都在虚拟机中进行操作,跟本地无关了。
vagrant ssh
进入上面配置的folder共享目录,没有就创建,正常情况下,映射目录中已和本地目录中一致。
composer global require "laravel/installer"
这边就能体现出Homestead的优势了,composer,php,git全部都在环境变量中,都是最新版本,不需要自己考虑
安装完成后,通过简单的 laravel new
命令即可在当前目录下创建一个新的 Laravel 应用,例如,laravel new blog
将会创建一个名为 blog
的新应用,且包含所有 Laravel 依赖。该安装方法比通过 Composer 安装要快很多:
laravel new blog
如果之前已经安装过旧版本的 Laravel 安装器,需要更新后才能安装最新的 Laravel 5.6 框架应用:
composer global update
通过http://homestead.test/blog/public,访问Laravel。看到下面的界面,即表示成功