背景
Laravel 是在 Vagrant 的基础上让开发环境更加统一,让开发者都能在指定的具体开发环境下使用 Laravel,这时便有了 Homestead。Homestead 是一个基于 Ubuntu 构建的虚拟机,它包含了所有 Laravel 开发时需要用到的东西,你可以很轻松的通过指定的 Laravel 版本来找到相对应版本的 Homestead 并进行安装。Homestead 提供的默认开发环境还会装上很多常用的开发工具来辅助 Laravel 进行项目开发,包括 PHP7, Nginx, Redis, Memcached, MySQL, Git, Node.js, NPM 等等
为什么要用Homestead
Homestead 是 Laravel 官方推荐的开发环境,开发尽量用Homestead。以下需要注意:
1.Homestead 统一了环境,避免歧义,减少新手在学习中遇到不必要的卡顿;
2.统一环境带来的好处还有:当你遇到问题的时候,其他同学能很容易的帮助到你;
3.最大程度接近线上生产环境,为后续的课程做铺垫;
4.这是最佳实践,是需要从一开始培养起来的好习惯。
博主表示强烈要求入坑,必须要用,环境统一,插件齐全,虚拟机自带配置elasticsearch ;Homestead虚拟机启动便可
Windows下的开发环境部署(请按照一下步骤安装)
1 VirtualBox
VirtualBox 是 Oracle 公司的开源虚拟机软件。
2 Vagrant
Vagrant 是用来管理虚拟机的工具,支持当前主流的虚拟机系统如 VirtualBox、VMware、AWS 等。Vagrant 的主要作用是提供一个可配置、可移植和复用的软件环境。Vagrant 让你通过编写一个 Vagrantfile 文件来控制虚拟机的启动、虚拟机网络环境的配置、虚拟机与主机间的文件共享,以及启动后自动执行一些配置脚本,如自动执行一个 Shell Script 来安装一些必备的开发工具,如安装配置MySQL、PHP,甚至是自动配置 Nginx 站点。这意味着,在一个多人开发的项目中,你只需要同步 Vagrantfile 文件,就可以保证参与项目的每个人各自的机器上拥有一致的开发环境。
Homestead 介绍
Homestead 利用 Vagrantfile 提供的便利,定制了一整套的可配置、可移植和复用的 Laravel 开发环境。Homestead 虚拟机里面包含了 Nginx Web 服务器、PHP 7、MySQL、Postgres、Redis、Memcached、Node,以及所有你在使用 Laravel 开发时需要用到的各种软件。
Homestead 包含了两个东西:
Homestead 管理脚本;
Homestead Box 虚拟机盒子。
接下来独自说明下。
1. Homestead 管理脚本
Homestead 脚本使用 Ruby 和 Shell 脚本编写而成。原理是对 Vagrantfile 文件做定制。将从 ~/Homestead/Homestead.yaml 读取的配置信息,在 provision 时,解析为 Vagrant 命令并进行对虚拟机的配置。Homestead 脚本的作用在于,提供了极其简单易用的接口,使我们只需要通过傻瓜化配置,即可完成复杂的任务。以下是几个常用的任务:
IP 配置,端口映射;
Nginx Site 创建;
数据库创建;
主机文件夹挂载到虚拟机等任务。
所有 Homestead 的版本历史在 此处 可以找到。在本书中,为了提高操作的效率,我们将会使用定制版本的 Homestead。
2. Homestead Box 虚拟机盒子
homestead.box 虚拟机盒子是提前打包好的 Vagrant Box 虚拟机盒子,里面预装了 Nginx Web 服务器、PHP 7、MySQL、Postgres、Redis、Memcached、Node,以及所有你在使用 Laravel 开发时所需要用到的各种软件。
安装和使用 Homestead
- 下载和导入 Homestead Box
首先我们需要下载 Homestead 虚拟机盒子,下载后的文件为 lc-homestead-6.1.1-2018090400.zip,请对其进行 zip 解压操作,解压成功后可以看到目录 lc-homestead-6.1.1-2018090400,此目录下包含两个文件:
virtualbox.box(教程定制化过的 Homestead 盒子)
metadata.json(盒子的导入配置文件)
在解压目录中 lc-homestead-6.1.1-2018090400 运行以下命令导入 Box:
> vagrant box add metadata.json
如果你使用的 Windows 系统在安装 Homestead 的时候报错:The box ‘laravel/homestead’ could not be found or
could not be accessed in the remote catalog.,请下载 MS Visual C++ 2010 x86 Redistributables 并进行安装即可修复。
4 安装GIT
5 下载 Homestead 管理脚本
利用Git 输入命令:
> cd ~
> git clone Homestead
进入Homestead 目录,初始化Homestead
> bash init.sh
Homestead.yaml 配置文件
1. 虚拟机设置
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
2.SSH 秘钥登录配置
authorize: ~/.ssh/id_rsa.pub
公钥和私钥一起同步到虚拟机
keys:
- ~/.ssh/id_rsa
- ~/.ssh/id_rsa.pub
检查主机上是否已经生成过 SSH Keyls -al ~/.ssh
生成 SSH Key
ssh-keygen -t rsa -C "你的邮箱账号@.com"
Generating public/private rsa key pair.
回车保存密钥,设置密钥
id_rs —— SSH 秘钥的 私钥 (Private Key)
id_rsa.pub —— SSH 秘钥的 公钥 (Public Key)
3. 共享文件夹配置
我们可以通过 folders 来指明本机要映射到 Homestead 虚拟机上的文件夹。
map 对应的是我们本机的文件夹,格式例如:E:/Homestead/Code,以开发者实际项目目录为准。
to 对应的是 Homestead 上的文件夹。
folders:
- map: ~/Code
to: /home/vagrant/Code
创建Codecd ~
mkdir Code
4. 站点配置
将 homestead.test 映射到一个 Laravel 项目的 public 目录上。
在hosts 192.168.10.10 homestead.test
5. 数据库配置
databases:
- homestead
6. 自定义变量
variables:
- key: APP_ENV
value: local