第四节 安装和配置 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 ~~~
';