系统要求php
window 7 及以上。laravel
安装包列表git
virtualbox 5.*版本github
vagrantshell
Homestead Box 虚拟机盒子数据库
gitjson
安装包资源下载windows
连接:https://pan.baidu.com/s/1DFZpvn5H0Sg2KEu32DrWJA
提取码:fcwv 数组
Homestead.yaml
文件
VirtualBox 是 Oracle 公司的开源虚拟机软件。VirtualBox 号称是最强的免费虚拟机软件,它不只功能齐全,并且性能也很优异!VirtualBox 支持大部分流行的系统,如:Mac, Windows, Linux 等。浏览器
安装包资源下载完成以后,双击安装包进行安装。以后按照提示操做一步一步进行安装便可。
Vagrant 是用来管理虚拟机的工具,支持当前主流的虚拟机系统如 VirtualBox、VMware、AWS 等。Vagrant 的主要做用是提供一个可配置、可移植和复用的软件环境。Vagrant 让你经过编写一个 Vagrantfile 文件来控制虚拟机的启动、虚拟机网络环境的配置、虚拟机与主机间的文件共享,以及启动后自动执行一些配置脚本,如自动执行一个 Shell Script 来安装一些必备的开发工具,如安装配置 MySQL、PHP,甚至是自动配置 Nginx 站点。这意味着,在一个多人开发的项目中,你只须要同步 Vagrantfile 文件,就能够保证参与项目的每一个人各自的机器上拥有一致的开发环境。
Homestead 利用 Vagrantfile 提供的便利,定制了一整套的可配置、可移植和复用的 Laravel 开发环境。Homestead 虚拟机里面包含了 Nginx Web 服务器、PHP 七、MySQL、Postgres、Redis、Memcached、Node,以及全部你在使用 Laravel 开发时须要用到的各类软件。
Homestead 包含了两个东西:
接下来独自说明下。
Homestead 脚本使用 Ruby 和 Shell 脚本编写而成。原理是对 Vagrantfile 文件作定制。将从 ~/Homestead/Homestead.yaml
读取的配置信息,在 provision 时,解析为 Vagrant 命令并进行对虚拟机的配置。Homestead 脚本的做用在于,提供了极其简单易用的接口,使咱们只须要经过傻瓜化配置,便可完成复杂的任务。如下是几个经常使用的任务:
全部 Homestead 的版本历史在 此处 能够找到。在本书中,为了提升操做的效率,咱们将会使用定制版本的 Homestead。
homestead.box
虚拟机盒子是提早打包好的 Vagrant Box 虚拟机盒子,里面预装了 Nginx Web 服务器、PHP 七、MySQL、Postgres、Redis、Memcached、Node,以及全部你在使用 Laravel 开发时所须要用到的各类软件。
全部虚拟机盒子版本历史 在此。
打不开的用户,下图是截屏:
能够看出 Homestead Box 虚拟机盒子有不少版本。不过,如 Homestead 脚本,为了学习的流畅性,咱们接下来将会使用定制版本的虚拟机盒子,你不须要太担忧版本的事情。
接下来,咱们会讲解:
因为国内的网络环境缘由,咱们特地为你们定制了适用于国情的 Homestead 安装包,该安装包提供了如下内容:
接下来让咱们开始进行 Homestead 的安装,首先咱们须要下载 Homestead 虚拟机盒子,建议你们使用迅雷离线下载或者其余离线下载方式下载此盒子。
下载后的文件为 lc-homestead-6.4.1-2019072300.zip
,请对其进行 zip 解压操做,解压成功后能够看到目录 lc-homestead-6.4.1-2019072300
,此目录下包含两个文件:
在解压目录中 lc-homestead-6.4.1-2019072300
运行如下命令导入 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 并进行安装便可修复。
至此完成 Homestead Vagrant 盒子的导入。
注:导入成功后,
lc-homestead-6.4.1-2019072300
文件夹可任意删除。
若是你先前已使用过 Git for Windows 来做为你进行 Laravel 项目开发时的默认命令行工具,则该工具将会默认为你安装好 Git。
使用如下命令来检测是否成功安装:
> git --version git version 2.12.2.windows.2
注:不须要担忧你的版本与我不一样。
因国内网络限制,为方便下载和后续管理脚本的流畅使用,本书中将使用定制版本的 Homestead 脚本,定制版有如下优点:
provision
时 composer self-update
的卡顿。接下来,使用 Git 下载定制版的 Homestead:
> cd ~ > git clone https://git.coding.net/summerblue/homestead.git Homestead
Windows 下,~
目录表明着 C:\Users\你的用户名
,而 ~/Homestead
表明着 C:\Users\你的用户名\Homestead
目录,相似:
注:咱们把 Homestead 放在
~/Homestead
路径下,为方便后面的讲解,请保持一致。
下载完成以后咱们使用命令行进入 Homestead
目录,再使用 Git 检出咱们须要的 Homestead 版本:
> cd ~/Homestead > git checkout v7.8.0
注:为了保证后续讲解的流畅性,请注意版本的一致性,这里咱们使用
v7.8.0
。
接下来咱们须要初始化 Homestead:
> init.bat
运行以上命令后,会在 ~/Homestead
目录下生成如下三个文件:
~/.bash_aliases
文件中,aliases
里能够放一些快捷命令的定义。接下来咱们将会对 Homestead.yaml
文件的各项配置信息进行详细讲解。
Homestead.yaml
文件在 ~/Homestead
文件夹里,在 Git-Bash 里,你可使用如下命令使用文件夹打开当前命令行所在目录:
> cd ~/Homestead/ > explorer .
可经过运行下面命令快速打开 Homestead.yaml
文件:
> subl ~/Homestead/Homestead.yaml
为了行文方便,后面若是没有提示的话,
Homestead.yaml
指的是~/Homestead/Homestead.yaml
文件。
Homestead.yaml
里的配置大体能够分为如下几种:
接下来咱们逐个讲解。
Homestead 支持咱们对虚拟机的 IP,内存,CPU,虚拟机的默认提供者进行配置。这里咱们基本不须要作任何配置,所以能够跳过。
ip: "192.168.10.10" memory: 2048 cpus: 1 provider: virtualbox
authorize
选项是指派登陆虚拟机受权链接的公钥文件,此文件填写的是主机上的公钥文件地址,虚拟机初始化时,此文件里的内容会被复制存储到虚拟机的 /home/vagrant/.ssh/authorized_keys
文件中,从而实现 SSH 免密码登陆。在这里咱们默认填写便可。
authorize: ~/.ssh/id_rsa.pub
keys
是数组选项,填写的是本机的 SSH 私钥文件地址。虚拟机初始化时,会将此处填写的全部 SSH 私钥文件复制到虚拟机的 /home/vagrant/.ssh/
文件夹中,从而使虚拟机能共享主机上的 SSH 私钥文件,使虚拟机具有等同于主机的身份认证。此功能为 SSH 受权提供了便利,例如在后面章节中,咱们只须要在 GitHub 上配置一个 SSH 公钥,便可实现 GitHub 对虚拟机和主机共同认证。
此处咱们将公钥和私钥一块儿同步到虚拟机中:
keys: - ~/.ssh/id_rsa - ~/.ssh/id_rsa.pub
接下来咱们来生成 SSH Key,开始以前,咱们先使用如下命令来检查主机上是否已经生成过 SSH Key:
> ls -al ~/.ssh
若是存在 id_rsa
和 id_rsa.pub
的话,请跳过如下生成 SSH 的步骤继续阅读剩下内容。
不然使用如下方法来生成 SSH Key,请将 your_email@example.com
替换为你的邮箱:
> ssh-keygen -t rsa -C "your_email@example.com" Generating public/private rsa key pair.
命令行会提示让你指定秘钥的名称,按回车键将 SSH Key 保存到默认文件名便可:
Enter a file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
接下来会询问你为 SSH Key 设置密码,按回车键便可,默认为空密码:
Enter passphrase (empty for no passphrase): [Type a passphrase] Enter same passphrase again: [Type passphrase again]
能够都选择默认,一路 Enter
键便可,大体以下:
这个时候若是咱们再使用:
> ls -al ~/.ssh
查看的话,会出现:
SSH 秘钥的两个文件:
id_rsa
—— SSH 秘钥的 私钥 (Private Key)id_rsa.pub
—— SSH 秘钥的 公钥 (Public Key)咱们能够经过 folders
来指明本机要映射到 Homestead 虚拟机上的文件夹。
map
对应的是咱们本机的文件夹,格式例如:E:/Homestead/Code,以开发者实际项目目录为准。to
对应的是 Homestead 上的文件夹。为了后续课程讲解,请统一配置以下:
folders: - map: ~/code to: /home/vagrant/code
默认 Homestead
会将咱们本机的 ~/Code
文件夹映射到 /home/vagrant/Code
文件夹上。如今咱们本机尚未 ~/Code
文件夹,让咱们来建立一个:
> cd ~ > mkdir code
执行成功后,一样的,咱们能够经过 explorer .
命令在文件夹中打开此目录:
在后面的章节中,咱们将会在该文件夹下放置咱们全部的 Laravel 项目,Homestead 会把该文件夹下的项目自动映射到虚拟机的 /home/vagrant/code
文件夹上。
站点配置容许你在主机里,经过域名来访问虚拟机里的 Laravel 应用。以下面 sites
配置所示,将 homestead.test
映射到一个 Laravel 项目的 public
目录上。这一行配置,会命令 Homestead 为咱们新建一个 Nginx 站点,而且把 Web Root 配置到指定目录下。Laravel 应用的 Nginx 站点 Web Root 配置,默认就是在根目录下的 public
目录。
sites: - map: homestead.test to: /home/vagrant/code/Laravel/public
目前 Laravel
项目并不存在。这里先统一配置为以上,请不用着急,在后续的章节中,咱们会建立该 Laravel
项目。
另外,主机里直接访问虚拟机站点,必须经过绑定 hosts
来实现。接下来咱们利用 hosts
文件绑定 homestead.test
到虚拟机 IP 192.168.10.10
上。hosts
文件的完整路径为 C:\Windows\System32\Drivers\etc\hosts
,可以使用下面命令打开:
> subl C:/Windows/System32/Drivers/etc/hosts
若是你没有集成
subl
命令的话, 请使用编辑器直接打开文件,文件路径在C:\Windows\System32\Drivers\etc\hosts
。
在 hosts
文件的最后面加入如下一行:
192.168.10.10 homestead.test
至此站点就配置好了,等咱们在本地系统 ~/code/ 目录下建立 名为Laravel
的项目后,便可经过浏览器访问 homestead.test
站点。
如需建立多站点只需继续添加 虚拟域名和虚拟机目录(以下所示):
sites: - map: homestead.test to: /home/vagrant/code/Laravel/public
- map: blog.test to: /home/vagrant/code/blog/public
而后执行以下命令重载vagrant便可:
vagrant reload --provision
咱们能够为 Homestead 指定数据库名称,这里使用默认设置便可。
databases: - homestead
最后,若是你须要自定义一些在虚拟机上可使用的自定义变量,则能够在 variables
中进行定义。
variables: - key: APP_ENV value: local
Homestead 自定义变量在本书中并未使用,知悉有此功能便可。
完成了 Homestead 的配置,接下来咱们要开始启动虚拟机了。
在命令中输入 vagrant
,能看到 Vagrant 为咱们提供了一些便利的命令行,下面简单介绍一下 Vagrant 经常使用的一些命令行的使用:
命令行 | 说明 |
---|---|
vagrant init | 初始化 vagrant |
vagrant up | 启动 vagrant |
vagrant halt | 关闭 vagrant |
vagrant ssh | 经过 SSH 登陆 vagrant(须要先启动 vagrant) |
vagrant provision | 从新应用更改 vagrant 配置 |
vagrant destroy | 删除 vagrant |
让咱们开始启动 Homestead:
> cd ~/Homestead && vagrant up
第一次启动时,Vagrant 会作如下这几件事情:
Homestead.yaml
里的配置信息,对这台新建的虚拟机进行配置;成功启动后,仍是在 ~/Homestead
目录中,经过如下命令来 SSH 登陆 Homestead 虚拟机中:
> vagrant ssh
在咱们登陆成功后,你能看到相似于以下图的界面,如今咱们在该终端界面中输入的全部命令都将运行在 Homestead 虚拟机上。
在虚拟机界面下能够输入退出虚拟机:
$ exit
最后尝试关闭 Homestead:
> vagrant halt
注意:本文中由于虚拟机的存在,咱们会有两个运行命令行的环境,一个是主机,另外一个是 Homestead 虚拟机。咱们会在命令的前面使用『命令行提示符』来区分主机和 Homestead。请记住以
>
开头的命令是运行在主机里,$
开头的命令是运行在 Homestead 虚拟机里。详见 写做约定 - 命令行提示符。
使用 Homestead 开发时常常遇到站点龟速响应的问题,解决方案请见: Wiki:Laravel Homestead:开启 NFS 解决站点响应缓慢
如下是环境部署的常见问题搜集,方便遇到问题的同窗查阅。若是你一切正常,请无视如下。