2023年12月1日发(作者:)

Laravel开发环境搭建-Windows

系统要求

Windows 7 及以上

步骤简略

接下来让我们按照这⼏个步骤来完成整个 Laravel 开发环境的安装及配置:

1. 安装 VirtualBox

2. 安装 Vagrant

3. 导⼊ Homestead Box 虚拟机盒⼦

然后⼀步⼀步按照默认安装即可。

Homestead 介绍

Homestead 利⽤ Vagrantfile 提供的便利,定制了⼀整套的可配置、可移植和复⽤的 Laravel 开发环境。Homestead 虚拟机⾥⾯包含了

Nginx Web 服务器、PHP 7、MySQL、Postgres、Redis、Memcached、Node,以及所有你在使⽤ Laravel 开发时需要⽤到的各种

软件。

Homestead 包含了两个东西:

Homestead 管理脚本;

Homestead Box 虚拟机盒⼦。

接下来独⾃说明下。

打不开的⽤户,下图是截屏:

可以看出 Homestead Box 虚拟机盒⼦有很多版本。不过,如 Homestead 脚本,为了学习的流畅性,我们接下来将会使⽤定制版本的虚

拟机盒⼦,你不需要太担⼼版本的事情。

安装和使⽤ Homestead

接下来,我们会讲解:

1. 下载和导⼊ Homestead Box 虚拟机盒⼦;

2. 安装 Git ,为下载 Homestead 管理脚本做准备;

3. 使⽤ Git 下载 Homestead 管理脚本;

1. 下载和导⼊ Homestead Box

由于国内的⽹络环境原因,我们特意为⼤家定制了适⽤于国情的 Homestead 安装包,该安装包提供了以下内容:

Composer 加速,配置了 Composer 中国全量镜像 ⽀持;

默认集成 Heroku ⼯具;

默认集成 Yarn,并为 Yarn 加了淘宝镜像的加速;

使⽤ CNPM 对 NPM 进⾏加速。

接下来让我们开始进⾏ Homestead 的安装,⾸先我们需要,建议⼤家使⽤迅雷离线下载或者其他离线下载⽅式下载此盒⼦。

下载后的⽂件为 ,请对其进⾏ zip 解压操作,解压成功后可以看到⽬录

lc-homestead-6.4.1-2019072300

此⽬录下包含两个⽂件:

(教程定制化过的 Homestead 盒⼦)

(盒⼦的导⼊配置⽂件)

在解压⽬录中 运⾏以下命令导⼊ Box:

lc-homestead-6.4.1-2019072300

注意:请必须解压到 ⾮中⽂路径,有同学反馈中⽂路径会出现不可预知问题。

如下图所⽰:

如果你使⽤的 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 ⽂件夹可任意删除。

2. 安装 Git

如果你先前已使⽤过 来作为你进⾏ Laravel 项⽬开发时的默认命令⾏⼯具,则该⼯具将会默认为你安装好 Git。

使⽤以下命令来检测是否成功安装:

> git --version

git version 2.12.2.windows.2

注:不需要担⼼你的版本与我不同。

3. 下载 Homestead 管理脚本

因国内⽹络限制,为⽅便下载和后续管理脚本的流畅使⽤,本书中将使⽤定制版本的 Homestead 脚本,定制版有以下优势:

从国内 ⽹站下载,下载速度会⽐ 更快;

对脚本进⾏修改,移除了每⼀次 的卡顿。

provisioncomposer self-update

接下来,使⽤ Git 下载定制版的 Homestead:

> cd ~

> git clone https://git.coding.net/summerblue/homestead.git Homestead

Windows 下, ⽬录代表着 你的⽤户名,⽽ 代表着 你的⽤户名 ⽬录,类似:

~C:Users~/HomesteadC:UsersHomestead

注:我们把 Homestead 放在 ~/Homestead 路径下,为⽅便后⾯的讲解,请保持⼀致。

下载完成之后我们使⽤命令⾏进⼊ ⽬录,再使⽤ Git 检出我们需要的 Homestead 版本:

Homestead

> cd ~/Homestead

> git checkout v7.8.0

注:为了保证后续讲解的流畅性,请注意版本的⼀致性,这⾥我们使⽤ v7.8.0。

接下来我们需要初始化 Homestead:

> bash init.sh

运⾏以上命令后,会在 ⽬录下⽣成以下三个⽂件:

~/Homestead

- 主要配置信息⽂件,我们可以在此⽂件中配置 Homestead 的站点和数据库等信息;

- 每⼀次 Homestead 盒⼦重置后(provision)会调⽤的 shell 脚本⽂件;

aliases - 每⼀次 Homestead 盒⼦重置后(provision),会被替换⾄虚拟机的 ⽂件中, ⾥可以放⼀些快捷命令的

~/.bash_aliasesaliases

定义。

接下来我们将会对 ⽂件的各项配置信息进⾏详细讲解。

配置⽂件

⽂件在 ⽂件夹⾥,在 Git-Bash ⾥,你可以使⽤以下命令使⽤⽂件夹打开当前命令⾏所在⽬录:

~/Homestead

> cd ~/Homestead/

> explorer .

可通过运⾏下⾯命令快速打开 ⽂件:

> subl ~/Homestead/Homestead.yaml

为了⾏⽂⽅便,后⾯如果没有提⽰的话, 指的是 ⽂件。

~/Homestead/

⾥的配置⼤致可以分为以下⼏种:

1. 虚拟机设置;

2. SSH 秘钥登录配置;

3. 共享⽂件夹配置;

4. 站点配置;

5. 数据库配置;

6. ⾃定义变量;

接下来我们逐个讲解。

1. 虚拟机设置

Homestead ⽀持我们对虚拟机的 IP,内存,CPU,虚拟机的默认提供者进⾏配置。这⾥我们基本不需要做任何配置,因此可以跳过。

ip: "192.168.10.10"

memory: 2048

cpus: 1

provider: virtualbox

2. SSH 秘钥登录配置

authorize

选项是指派登录虚拟机授权连接的公钥⽂件,此⽂件填写的是主机上的公钥⽂件地址,虚拟机初始化时,此⽂件⾥的内容会被复

制存储到虚拟机的 ⽂件中,从⽽实现 SSH 免密码登录。在这⾥我们默认填写即可。

/home/vagrant/.ssh/authorized_keys

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

如果存在 的话,请跳过以下⽣成 SSH 的步骤继续阅读剩下内容。

id_rsaid_

否则使⽤以下⽅法来⽣成 ,请将 your_email@ 替换为你的邮箱:

SSH Key

> ssh-keygen -t rsa -C "your_email@"

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_

—— SSH 秘钥的 公钥 (Public Key)

3. 共享⽂件夹配置

我们可以通过 来指明本机要映射到 Homestead 虚拟机上的⽂件夹。

folders

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

⽂件夹上。

4. 站点配置

站点配置允许你在主机⾥,通过域名来访问虚拟机⾥的 Laravel 应⽤。如下⾯ 配置所⽰,将 映射到⼀个 Laravel 项

sites

⽬的 ⽬录上。这⼀⾏配置,会命令 Homestead 为我们新建⼀个 Nginx 站点,并且把 Web Root 配置到指定⽬录下。Laravel 应

public

⽤的 Nginx 站点 Web Root 配置,默认就是在根⽬录下的 ⽬录。

public

sites:

- map: homestead.test

to: /home/vagrant/Code/Laravel/public

⽬前 项⽬并不存在。这⾥先统⼀配置为以上,请不⽤着急,在后续的章节中,我们会创建该 项⽬。

LaravelLaravel

另外,主机⾥直接访问虚拟机站点,必须通过绑定 来实现。接下来我们利⽤ ⽂件绑定 到虚拟机

hostshostsIP

192.168.10.10hostsC:WindowsSystem32Driversetchosts

上。 ⽂件的完整路径为 ,可使⽤下⾯命令打开:

> subl C:/Windows/System32/Drivers/etc/hosts

如果你没有集成 subl 命令的话, 请使⽤编辑器直接打开⽂件,⽂件路径在

C:WindowsSystem32Driversetchosts

⽂件的最后⾯加⼊以下⼀⾏:

hosts

192.168.10.10 homestead.test

⾄此站点就配置好了,等我们在后⾯章节创建 项⽬后,即可通过浏览器访问 站点。

Laravel

5. 数据库配置

我们可以为 Homestead 指定数据库名称,这⾥使⽤默认设置即可。

databases:

- homestead

6. ⾃定义变量

最后,如果你需要⾃定义⼀些在虚拟机上可以使⽤的⾃定义变量,则可以在 中进⾏定义。

variables

variables:

- key: APP_ENV

value: local

Homestead ⾃定义变量在本书中并未使⽤,知悉有此功能即可。

运⾏ Vagrant

完成了 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 虚拟机盒⼦为模板,新建⼀台虚拟机;

并按照 ⾥的配置信息,对这台新建的虚拟机进⾏配置;

配置完成后启动虚拟机。

成功启动后,还是在 ⽬录中,通过以下命令来 SSH 登录 Homestead 虚拟机中:

~/Homestead

> vagrant ssh

在我们登录成功后,你能看到类似于如下图的界⾯,现在我们在该终端界⾯中输⼊的所有命令都将运⾏在 Homestead 虚拟机上。

在虚拟机界⾯下可以输⼊退出虚拟机:

$ exit

最后尝试关闭 Homestead:

> vagrant halt

注意:本书中因为虚拟机的存在,我们会有两个运⾏命令⾏的环境,⼀个是主机,另⼀个是 Homestead

虚拟机。我们会在命令的前⾯使⽤『命令⾏提⽰符』来区分主机和 Homestead。请记住以 > 开头的命令是运⾏在主机⾥,$

开头的命令是运⾏在 Homestead 虚拟机⾥。详见 写作约定 - 命令⾏提⽰符。

开启 NFS 挂载

使⽤ Homestead 开发时经常遇到站点龟速响应的问题,解决⽅案请见:

FAQ

以下是环境部署的常见问题搜集,⽅便遇到问题的同学查阅。如果你⼀切正常,请⽆视以下。

1. SSH auth method: private key

2. Failed to restart e: Unit e not found.

3. 为什么我的项⽬页⾯打开这么慢?(重点推荐)

4. Homestead 配置好后访问项⽬出现 No input file specified

这个错误的原因是⽂件夹映射没成功。