利用VirtualBox、Vagrant、Homestead Box、Homestead搭建虚拟机开发环境。

接下来我们按照以下顺序步骤

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

一、安装 VirtualBox
VirtualBox 是 Oracle 公司的开源虚拟机软件。VirtualBox 号称是最强的免费虚拟机软件,它不仅功能齐全,而且性能也很优异!VirtualBox 支持大部分流行的系统,如:MacOs, Windows, Linux 等。
官网地址:https://www.virtualbox.org/

这个安装完基本不需要管,
不过这里有小坑,

  1. window 要boot 中需要开启虚拟机,要不然启动虚拟机会显示连接超时
  2. MacOs中 安装时要把设置中安全性中的文件保险箱停掉,因为安装过程中MacOs不允许修改配置文件,要不然启动虚拟机时会显示配置文件有问题

二、安装 Vagrant

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

官网:https://www.vagrantup.com/

三、Homestead Box

Homestead 利用 Vagrantfile 提供的便利,定制了一整套的可配置、可移植和复用的 Laravel 开发环境。Homestead 虚拟机里面包含了 Nginx Web 服务器、PHP 7、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 创建
  • 数据库创建
  • 主机文件夹挂载到虚拟机等任务

2. Homestead Box 虚拟机盒子

homestead.box 虚拟机盒子是提前打包好的 Vagrant Box 虚拟机盒子,里面预装了 Nginx Web 服务器、PHP 7、MySQL、Postgres、Redis、Memcached、Node,以及所有你在使用 Laravel 开发时所需要用到的各种软件。

安装和使用 Homestead

接下来,我们会讲解:

  1. 下载和导入 Homestead Box 虚拟机盒子;
  2. 安装 Git ,为下载 Homestead 管理脚本做准备;
  3. 使用 Git 下载 Homestead 管理脚本;

1.下载和导入 Homestead Box

接下来让我们开始进行 Homestead 的安装,首先我们需要下载 Homestead 虚拟机盒子,建议大家使用迅雷离线下载或者其他离线下载方式下载此盒子。

接下来让我们开始进行 Homestead 的安装,首先我们需要下载 Homestead 虚拟机盒子虚拟机盒子,建议大家使用迅雷离线下载或者其他离线下载方式下载此盒子。

下载后的文件为 lc-homestead-6.1.1-2018090400.zip,请对其进行 zip 解压操作,解压成功后可以看到目录 lc-homestead-6.1.1-2018090400,此目录下包含两个文件:

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

在解压目录中 lc-homestead-6.1.1-2018090400 运行以下命令导入 Box:

>  vagrant box add metadata.json
成功会显示 Successfully added box

利用VirtualBox、Vagrant、Homestead Box、Homestead搭建虚拟机开发环境。_第1张图片

注:导入成功后,lc-homestead-6.1.1-2018090400 文件夹可任意删除。

2.安装Git

3. 下载 Homestead 管理脚本

cd ~
git clone https://git.coding.net/summerblue/homestead.git Homestead
注:我们把 Homestead 放在 ~/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 文件

open  ~/Homestead/Homestead.yam
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

ls -al ~/.ssh
如果有ssh的话可以跳过这里

否则使用以下方法来生成 SSH Key,请将 [email protected] 替换为你的邮箱:

ssh-keygen -t rsa -C "[email protected]"

一直回车就好
然后在输入查看一下

ls -al ~/.ssh

可以看到以下两个文件:

  • id_rsa—— SSH 秘钥的 私钥 (Private Key)
  • id_rsa.pub—— SSH 秘钥的 公钥 (Public Key)
3. 共享文件夹配置

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

  • map对应的是我们本机的文件夹
  • to对应的是 Homestead 上的文件夹。

为了配置顺利,采用统一的配置

folders:
- map: ~/Code
to: /home/vagrant/Code

默认 Homestead会将我们本机的 ~/Code文件夹映射/home/vagrant/Code文件夹上。现在我们本机还没有 ~/Code 文件夹,让我们来创建一个:

cd ~
mkdir Code

在后面的章节中,我们将会在该文件夹下放置我们所有的 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 文件的完整路径为 /etc/hosts,可使用下面命令打开:

如何修改hosts文件
  • window:中,到 C:\Windows\System32\drivers\etc打开
  • MacOs:修改hosts 会修改失败,可以用 sudo vim hosts
5. 数据库配置

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

databases:
    - homestead
6. 自定义变量

最后,如果你需要自定义一些在虚拟机上可以使用的自定义变量,则可以在 variables 中进行定义。

Homestead 自定义变量在本书中并未使用,知悉有此功能即可。
variables:
    - key: APP_ENV
      value: local
运行 Vagrant

完成了 Homestead的配置,接下来我们要开始启动虚拟机了。

在命令中输入 vagrant,能看到 Vagrant为我们提供了一些便利的命令行,下面简单介绍一下 Vagrant 常用的一些命令行的使用:

命令行 说明
vagrant init 初始化 vagrant
vagrant up 启动 vagrant
vagrant halt 关闭 vagrant
vagrant ssh 通过 SSH 登录 vagrant(需要先启动 vagrant up)
vagrant provision 如果修改了Homestead.yaml文件,就重新运行这个
vagrant destroy 删除 vagrant

让我们开始启动 Homestead:

 cd ~/Homestead && vagrant up

第一次启动时,Vagrant 会做以下这几件事情:

  • 以导入的 Homestead 虚拟机盒子为模板,新建一台虚拟机;
  • 并按照 Homestead.yaml里的配置信息,对这台新建的虚拟机进行配置;
  • 配置完成后启动虚拟机。

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

vagrant ssh

运行成功后,输入我们配置在 sites中的 homestead.test就能访问了

此时如果没有项目的话可能会显示找不到页面;
也可以在Code/Laravel/public 下创建一个index.html
在浏览器输入 homestead.test/index.html 尝试访问

在虚拟机界面下可以输入退出虚拟机:

exit && vagrant halt

本文参考:https://learnku.com/docs/laravel-development-environment/5.8/development-environment-macos/4372
Window、MacOs、通用

你可能感兴趣的:(环境搭建)