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

本文详细介绍了搭建Laravel开发环境中Homestead虚拟机的步骤。先安装VirtualBox和Vagrant,接着下载导入Homestead Box,安装Git并下载管理脚本。还讲解了Homestead.yaml文件的各项配置,如虚拟机、SSH秘钥、共享文件夹等,最后启动虚拟机并介绍访问方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

  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

在这里插入图片描述

注:导入成功后,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,请将 your_email@example.com 替换为你的邮箱:

ssh-keygen -t rsa -C "your_email@example.com"

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

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、通用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值