Homestead - laravel开发环境搭建(windows)

系统要求php


window 7 及以上。laravel

 

安装包列表git


 

virtualbox 5.*版本github

vagrantshell

Homestead Box 虚拟机盒子数据库

gitjson

 

安装包资源下载windows


 

连接:https://pan.baidu.com/s/1DFZpvn5H0Sg2KEu32DrWJA
提取码:fcwv 数组

 

步骤


 

  1. 安装 VirtualBox
  2. 安装 Vagrant
  3. 导入 Homestead Box 虚拟机盒子
  4. 安装 Git
  5. 安装 Homestead 管理脚本
  6. 配置 Homestead.yaml 文件
  7. 启动 Homestead 虚拟机
  8. 开启 NFS 挂载模式

安装 VirtualBox


 

VirtualBox 是 Oracle 公司的开源虚拟机软件。VirtualBox 号称是最强的免费虚拟机软件,它不只功能齐全,并且性能也很优异!VirtualBox 支持大部分流行的系统,如:Mac, Windows, Linux 等。浏览器

安装包资源下载完成以后,双击安装包进行安装。以后按照提示操做一步一步进行安装便可。

 

安装 Vagrant


 

Vagrant 是用来管理虚拟机的工具,支持当前主流的虚拟机系统如 VirtualBox、VMware、AWS 等。Vagrant 的主要做用是提供一个可配置、可移植和复用的软件环境。Vagrant 让你经过编写一个 Vagrantfile 文件来控制虚拟机的启动、虚拟机网络环境的配置、虚拟机与主机间的文件共享,以及启动后自动执行一些配置脚本,如自动执行一个 Shell Script 来安装一些必备的开发工具,如安装配置 MySQL、PHP,甚至是自动配置 Nginx 站点。这意味着,在一个多人开发的项目中,你只须要同步 Vagrantfile 文件,就能够保证参与项目的每一个人各自的机器上拥有一致的开发环境。

 

Homestead 介绍


 

Homestead 利用 Vagrantfile 提供的便利,定制了一整套的可配置、可移植和复用的 Laravel 开发环境。Homestead 虚拟机里面包含了 Nginx Web 服务器、PHP 七、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 七、MySQL、Postgres、Redis、Memcached、Node,以及全部你在使用 Laravel 开发时所须要用到的各类软件。

全部虚拟机盒子版本历史 在此

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

 

file
 

 

能够看出 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 的安装,首先咱们须要下载 Homestead 虚拟机盒子,建议你们使用迅雷离线下载或者其余离线下载方式下载此盒子。

下载后的文件为 lc-homestead-6.4.1-2019072300.zip,请对其进行 zip 解压操做,解压成功后能够看到目录 lc-homestead-6.4.1-2019072300,此目录下包含两个文件:

  • virtualbox.box(教程定制化过的 Homestead 盒子)
  • metadata.json(盒子的导入配置文件)

在解压目录中 lc-homestead-6.4.1-2019072300 运行如下命令导入 Box:

> vagrant box add metadata.json

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

以下图所示:

 

file
 

 

若是你使用的 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

若是你先前已使用过 Git for Windows 来做为你进行 Laravel 项目开发时的默认命令行工具,则该工具将会默认为你安装好 Git。

使用如下命令来检测是否成功安装:

> git --version git version 2.12.2.windows.2

 

file
 

 

注:不须要担忧你的版本与我不一样。

 

3. 下载 Homestead 管理脚本

因国内网络限制,为方便下载和后续管理脚本的流畅使用,本书中将使用定制版本的 Homestead 脚本,定制版有如下优点:

  • 从国内 coding.net 网站下载,下载速度会比 官方 更快;
  • 对脚本进行修改,移除了每一次 provision 时 composer self-update 的卡顿。

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

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

Windows 下,~ 目录表明着 C:\Users\你的用户名,而 ~/Homestead 表明着 C:\Users\你的用户名\Homestead 目录,相似:

 

file
 

 

注:咱们把 Homestead 放在 ~/Homestead 路径下,为方便后面的讲解,请保持一致。

下载完成以后咱们使用命令行进入 Homestead 目录,再使用 Git 检出咱们须要的 Homestead 版本:

> cd ~/Homestead > git checkout v7.8.0

注:为了保证后续讲解的流畅性,请注意版本的一致性,这里咱们使用 v7.8.0

接下来咱们须要初始化 Homestead:

> init.bat

运行以上命令后,会在 ~/Homestead 目录下生成如下三个文件:

  • Homestead.yaml - 主要配置信息文件,咱们能够在此文件中配置 Homestead 的站点和数据库等信息;
  • after.sh - 每一次 Homestead 盒子重置后(provision)会调用的 shell 脚本文件;
  • aliases - 每一次 Homestead 盒子重置后(provision),会被替换至虚拟机的 ~/.bash_aliases 文件中,aliases 里能够放一些快捷命令的定义。

接下来咱们将会对 Homestead.yaml 文件的各项配置信息进行详细讲解。

 

Homestead.yaml 配置文件


 

Homestead.yaml 文件在 ~/Homestead 文件夹里,在 Git-Bash 里,你可使用如下命令使用文件夹打开当前命令行所在目录:

> cd ~/Homestead/ > explorer .

可经过运行下面命令快速打开 Homestead.yaml 文件:

> subl ~/Homestead/Homestead.yaml

为了行文方便,后面若是没有提示的话, Homestead.yaml 指的是 ~/Homestead/Homestead.yaml 文件。

Homestead.yaml 里的配置大体能够分为如下几种:

  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 选项是指派登陆虚拟机受权链接的公钥文件,此文件填写的是主机上的公钥文件地址,虚拟机初始化时,此文件里的内容会被复制存储到虚拟机的 /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 键便可,大体以下:

 

file
 

 

这个时候若是咱们再使用:

> ls -al ~/.ssh

查看的话,会出现:

 

file
 

 

SSH 秘钥的两个文件:

  • id_rsa —— 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

默认 Homestead 会将咱们本机的 ~/Code 文件夹映射到 /home/vagrant/Code 文件夹上。如今咱们本机尚未 ~/Code 文件夹,让咱们来建立一个:

> cd ~ > mkdir code

执行成功后,一样的,咱们能够经过 explorer . 命令在文件夹中打开此目录:

 

file
 

 

在后面的章节中,咱们将会在该文件夹下放置咱们全部的 Laravel 项目,Homestead 会把该文件夹下的项目自动映射到虚拟机的 /home/vagrant/code 文件夹上。

 

4. 站点配置

站点配置容许你在主机里,经过域名来访问虚拟机里的 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 站点。

5. 多站点配置

如需建立多站点只需继续添加 虚拟域名和虚拟机目录(以下所示):

sites:
    - map: homestead.test
      to: /home/vagrant/code/Laravel/public
- map: blog.test
      to: /home/vagrant/code/blog/public

而后执行以下命令重载vagrant便可:

vagrant reload --provision
 
  
 

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 虚拟机盒子为模板,新建一台虚拟机;
  • 并按照 Homestead.yaml 里的配置信息,对这台新建的虚拟机进行配置;
  • 配置完成后启动虚拟机。

成功启动后,仍是在 ~/Homestead 目录中,经过如下命令来 SSH 登陆 Homestead 虚拟机中:

> vagrant ssh

在咱们登陆成功后,你能看到相似于以下图的界面,如今咱们在该终端界面中输入的全部命令都将运行在 Homestead 虚拟机上。

 

JWXEpjiUdi.png
 

 

在虚拟机界面下能够输入退出虚拟机:

$ exit

最后尝试关闭 Homestead:

> vagrant halt

注意:本文中由于虚拟机的存在,咱们会有两个运行命令行的环境,一个是主机,另外一个是 Homestead 虚拟机。咱们会在命令的前面使用『命令行提示符』来区分主机和 Homestead。请记住以 > 开头的命令是运行在主机里,$ 开头的命令是运行在 Homestead 虚拟机里。详见 写做约定 - 命令行提示符

 

开启 NFS 挂载


 

使用 Homestead 开发时常常遇到站点龟速响应的问题,解决方案请见: Wiki:Laravel Homestead:开启 NFS 解决站点响应缓慢

 

FAQ


 

如下是环境部署的常见问题搜集,方便遇到问题的同窗查阅。若是你一切正常,请无视如下。

 

1. SSH auth method: private key

Homestead 启动时 SSH auth method: private key 解决方案汇总

 

2. Failed to restart php7.0-fpm.service: Unit php7.0-fpm.service not found.

Vagrant 启动虚拟机 提示 PHP7.0 模块找不到,这个怎么处理呢?

 

3. 为何个人项目页面打开这么慢?(重点推荐)

解决 Windows 系统使用 Homestead 运行 Laravel 项目响应缓慢问题

 

本文转载于 https://learnku.com/docs/laravel-development-environment/5.8/development-environment-windows/4373

相关文章
相关标签/搜索