windows 安装 homestead
参考文档 :
laravel开发环境部署
Windows下Laravel5.5 的 Homestead 开发环境部署
[ Laravel 5.7 文档 ] 快速入门 —— 重量级开发环境:Homestead
git配置私钥(私钥、ssh、公钥)
准备安装
在使用 Homestead 之前,需要先安装 Git 、Virtual Box 5.2、VMWare、Parallels 或 Hyper-V (四选一,我们通常选择 VirtualBox,因为只有它是免费的)以及 Vagrant
下载 Vagrant
下载 VirtualBox
下载 windows版Git
安装Vagrant 需要重启电脑
将 laravel/homestead Box 添加到 Vagrant 中安装
win+R 打开cmd 运行以下命令 安装 homestead Box
vagrant box add laravel/homestead
我下载一直未成功 就参考第一个链接 直接下载 Homestead 虚拟机盒子
下载后的文件为 lc-homestead-6.1.1-2018090400.zip,请对其进行 zip 解压操作,解压成功后可以看到目录 lc-homestead-6.1.1-2018090400,此目录下包含两个文件:
- virtualbox.box(教程定制化过的 Homestead 盒子)
- metadata.json(盒子的导入配置文件)
导入Box
在解压目录中 lc-homestead-6.1.1-2018090400 运行以下命令导入 Box:
vagrant box add metadata.json
注意:请必须解压到 非中文路径,有同学反馈中文路径会出现不可预知问题。
安装Git
开头参考文档第三个链接
git配置私钥(私钥、ssh、公钥)
-
本地安装好git;
-
桌面右键 Git Bash Here 打开git命令行;
-
ssh-keygen -t rsa -C “nideyouxiang@xxx.com” (全部按enter);
-
cd ~/.ssh (如果没有执行第三步,则不会有这个文件夹);
-
cat id_rsa.pub 在命令行打开这个文件,会直接输出密钥;
-
复制,打开github ,点自己头像 >> settings >> SSH and GPG keys >>New SSH key
-
titile 随便写。 key里 粘贴第六步的内容;完成。
步骤三 :
生成 SSH 请将 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)
步骤四:
步骤五:
步骤六:
下载 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
接下来我们需要初始化 Homestead:
> bash init.sh
运行以上命令后,会在 ~/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
如果你没有集成 subl 命令的话, 请使用编辑器直接打开文件,文件路径在 C:\Users\a\Homestead文件夹内
Homestead.yaml 里的配置大致可以分为以下几种:
- 虚拟机设置;
- SSH 秘钥登录配置;
- 共享文件夹配置;
- 站点配置;
- 数据库配置;
- 自定义变量;
接下来我们逐个讲解。
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
SSH 秘钥的两个文件:
- id_rsa —— SSH 秘钥的 私钥 (Private Key)
- id_rsa.pub —— SSH 秘钥的 公钥 (Public Key)
如果没有 请往上翻 安装Git 中的生成SSH。
3. 共享文件夹配置
我们可以通过 folders 来指明本机要映射到 Homestead 虚拟机上的文件夹。
- map 对应的是我们本机的文件夹,格式例如:E:/Homestead/Code,以开发者实际项目目录为准。
- to 对应的是 Homestead 上的文件夹。
为了后续课程讲解,请统一配置如下:
folders:- map: ~/Codeto: /home/vagrant/Code
默认 Homestead 会将我们本机的 ~/Code 文件夹映射到 /home/vagrant/Code 文件夹上。现在我们本机还没有 ~/Code 文件夹,让我们来创建一个:
> cd ~> mkdir Code
执行成功后,同样的,我们可以通过 explorer . 命令在文件夹中打开此目录:
在后面的章节中,我们将会在该文件夹下放置我们所有的 Laravel 项目,Homestead 会把该文件夹下的项目自动映射到虚拟机的 /home/vagrant/Code 文件夹上。
4. 站点配置
站点配置允许你在主机里,通过域名来访问虚拟机里的 Laravel 应用。如下面 sites 配置所示,将 homestead.test 映射到一个 Laravel 项目的 public 目录上。这一行配置,会命令 Homestead 为我们新建一个 Nginx 站点,并且把 Web Root 配置到指定目录下。Laravel 应用的 Nginx 站点 Web Root 配置,默认就是在根目录下的 public 目录。
sites:- map: homestead.testto: /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 shop.test //shop.test 就是你创建的网站名称
5. 数据库配置
我们可以为 Homestead 指定数据库名称,这里使用默认设置即可。
databases:- homestead
6. 自定义变量
最后,如果你需要自定义一些在虚拟机上可以使用的自定义变量,则可以在 variables 中进行定义。
variables:- key: APP_ENVvalue: local
Homestead 自定义变量在本书中并未使用,知悉有此功能即可。
运行 Vagrant
完成了 Homestead 的配置,接下来我们要开始启动虚拟机了。
> cd ~/Homestead && vagrant up
第一次启动时,Vagrant 会做以下这几件事情:
以导入的 Homestead 虚拟机盒子为模板,新建一台虚拟机;
并按照 Homestead.yaml 里的配置信息,对这台新建的虚拟机进行配置;
配置完成后启动虚拟机。
成功启动后,还是在 ~/Homestead 目录中,通过以下命令来 SSH 登录 Homestead 虚拟机中:
> vagrant ssh
在我们登录成功后,你能看到类似于如下图的界面,现在我们在该终端界面中输入的所有命令都将运行在 Homestead 虚拟机上。
在虚拟机界面下可以输入退出虚拟机:
$ exit
最后尝试关闭 Homestead:
> vagrant halt
当执行vagrant up 操作时 会在你的系统盘的Virtualbox VMs 文件夹中创建Homestead-7