第四节 安装和配置 Homestead
最后更新于:2022-04-02 01:41:45
本教程中使用的是『定制版的 Homestead』,预装了必须的软件,软件的配置也依照国内网络环境做了优化,如配置了 NPM 和 Composer 国内镜像加速等。
[TOC]
## 下载和导入 Homestead 虚拟盒子
### 百度网盘下载地址
>[success] 链接: https://pan.baidu.com/s/1pLIC7Dx
> 密码: mbgs
>[info] 此为国内特别定制版,集成了:
>1. Composer 加速,配置了 [Composer 中国全量镜像](https://laravel-china.org/composer) 支持;
> 2. 默认集成 Heroku 工具;
> 3. 默认集成 Yarn,并为 Yarn 加了淘宝镜像的加速;
> 4. 使用 CNPM 对 NPM 进行加速。
### 导入 Homestead Box
下载上述 zip 包并解压。
>[danger] 必须解压到 **非中文路径**,否则会报错。
在解压目录 `lt-homestead-3-0-0-2017082400` 中运行以下命令导入 Box:
~~~bash
> vagrant box add metadata.json
~~~
>[info] 导入成功后,`lt-homestead-3-0-0-2017082400` 文件夹可任意删除。
#### 可能出现的报错
>[danger] The box 'laravel/homestead' could not be found or
could not be accessed in the remote catalog.
>[success] 解决方法:
> 请下载 [MS Visual C++ 2010 x86 Redistributables](https://www.microsoft.com/en-us/download/confirmation.aspx?id=5555) 并进行安装即可修复。
## 下载 Homestead 管理脚本
### 下载定制版的 Homestead
~~~bash
> cd E:/
> git clone https://git.coding.net/summerblue/homestead.git Homestead
~~~
>[info] 定制版有以下优势:
>1. 从国内 coding.net 网站下载,下载速度比 [官方](https://github.com/laravel/homestead) 快;
> 2. 对脚本进行修改,移除了每一次 `provision` 时 `composer self-update` 的卡顿。
>[warning] 因为C盘空间有限,本教程将环境配置于E盘。
### 初始化 Homestead
在下载目录 `E:\Homestead` 下进行
~~~bash
> bash init.sh
~~~
## Homestead.yaml 配置文件
用以下命令打开配置文件所在目录
~~~bash
> cd E:/Homestead/
> explorer .
~~~
`Homestead.yaml` 文件样本如下:
~~~
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
- ~/.ssh/id_rsa.pub
folders:
- map: E:/Homestead/code
to: /home/vagrant/Code
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
databases:
- homestead
# blackfire:
# - id: foo
# token: bar
# client-id: foo
# client-token: bar
# ports:
# - send: 50000
# to: 5000
# - send: 7777
# to: 777
# protocol: udp
~~~
`Homestead.yaml` 里的配置大致可以分为以下几种:
### 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 授权提供了便利,例如在后面章节中,我们只需要在 gitee 上配置一个 SSH 公钥,即可实现 gitee 对虚拟机和主机共同认证。
在这里,我们将公钥和私钥一起同步到虚拟机中:
~~~
keys:
- ~/.ssh/id_rsa
- ~/.ssh/id_rsa.pub
~~~
>[info] id_rsa —— SSH 秘钥的 私钥 (Private Key)
> id_rsa.pub —— SSH 秘钥的 公钥 (Public Key)
接下来生成 SSH Key:
1. 检查主机上是否已经生成过 SSH Key:
~~~shell
> ls -al ~/.ssh
~~~
2. 如未生成,则
~~~bash
> ssh-keygen -t rsa -C "your_email@example.com"
Generating public/private rsa key pair.
~~~
>[success] 可以都选择默认,一路 `Enter` 键即可
### 3. 共享文件夹配置
`folders` 选项指明本机要映射到 Homestead 虚拟机上的文件夹。
>[info] `map` 对应的是我们本机的文件夹,格式例如:`E:/Homestead/code`,以开发者实际项目目录为准。
> `to` 对应的是 Homestead 虚拟机上的文件夹。
~~~
folders:
- map: E:/Homestead/code
to: /home/vagrant/Code
~~~
生成摆放代码的 `code` 文件夹:
~~~bash
> cd E:/Homestead
> mkdir code
~~~
后续将在该文件夹下放置所有的 Laravel 项目代码,Homestead 会把该文件夹下的项目自动映射到虚拟机的 /home/vagrant/Code 文件夹上。
### 4. 站点配置
`sites` 选项允许在主机里,通过域名来访问虚拟机里的 Laravel 应用。
~~~
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
~~~
这一行配置,会命令 Homestead 新建一个 Nginx 站点,并且把 Web Root 配置到指定目录下。
Laravel 应用的 Nginx 站点 Web Root 配置,默认就是在根目录下的 public 目录。
#### 修改 hosts
打开 `C:\Windows\System32\Drivers\etc\hosts` ,在最后面加入以下一行:
~~~text
192.168.10.10 homestead.app
~~~
创建 Laravel 项目后,即可通过浏览器访问 homestead.app 站点。
### 5. 数据库配置
`databases` 选项为 Homestead 指定数据库名称,这里使用默认设置即可。
~~~
databases:
- homestead
~~~
### 6. 自定义变量
`variables` 选项自定义一些在虚拟机上可以使用的自定义变量。
例如:
~~~
variables:
- key: APP_ENV
value: local
~~~
';