准备工作
需要一款windows上的bash工具,比如git-scm
安装hyper-v
hyper-v的安装方式有多种,这里分别介绍通过命令方式以及通过控制面板操作方式。
使用 PowerShell 启用 Hyper-V
- 以管理员身份打开 PowerShell 控制台。
- 运行以下命令:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All
如果无法找到此命令,请确保你以管理员身份运行 PowerShell。安装完成后,请重启。
通过“设置”启用 Hyper-V 角色
- 打开控制面板并选择“程序和功能”。
- 选择“启用或关闭 Windows 功能”。
- 选择“Hyper-V”,然后单击“确定”。
安装完成后,系统会提示你重新启动计算机。
配置虚拟交换机
由于默认的hyper-v虚拟网络交换机每次启动都会随机获得一个ip,那么这样以后不方便我们进行开发及绑定本地域名进行访问。所以我们自己新增一个桥接的虚拟网络。
- 打开Hyper-v管理器,然后点击最右侧的‘虚拟交换机管理器’
- 点击‘新建虚拟网络交换机’->选择‘外部’->‘创建虚拟交换机’按钮
- 名称可以使用
External Switch
,然后选择对应的网卡。(如果是WIFI上网那么当点击确定按钮后我们需要到控制面板\所有控制面板项\网络连接
界面去快速的禁用一下网线网卡,然后在启用)
安装vagrant
首先通过vagrant官网下载对应平台的vagrant安装程序,完成后直接无脑双击下一步安装。安装完成后会提示重启电脑。重启后打开PowerShell输入vagrant
如果出现如下提示证明安装成功
下载Homestead运行脚本
打开git-scm命令行工具,输入:
git clone https://github.com/laravel/homestead.git ~/Homestead
cd Homestead
git checkout release #切换到稳定版本
随后继续执行bash init.sh
进行初始化。不出意外,你将在Homestead目录下看见Vagrantfile
文件以及Homestead.yaml
文件。
配置Homestead.yaml
---
#ip: "192.168.56.56" #hyperv默认从dhcp获取ip
memory: 2048
cpus: 2
provider: hyperv #服务载体修改为hyperv
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: E:\workspace\code
to: /home/vagrant/code
- map: E:\workspace\go
to: /home/vagrant/go
type: "smb"
smb_username: lepig
smb_password: l
sites:
- map: homestead.test
to: /home/vagrant/code/homestead/public
php: "7.4"
- map: my.test
to: /home/vagrant/code/homestead/public
databases:
- homestead
features:
- mysql: true
- mariadb: false
- postgresql: false
- ohmyzsh: false
- webdriver: false
导入box
vagrant box add laravel/homestead
vagrant box list #查看导入的box
这一步导入过程可能会因为网络问题下载的比较缓慢,如果有条件可以挂梯子加快下载速度。
最终下载完成后box会存放在C:\Users\yourname\.vagrant.d\boxes\
下,比如我的:
metadata_url中的内容为https://vagrantcloud.com/laravel/homestead
启动homestead
当我们输入vagrant up
的时候,命令行界面会需要我们确认选择我们上面建立的‘虚拟交换机’网卡:
这时我们选择我们自己所创建的External Switch
也就是输入1
。继续等待刷屏...
Hyper-v会从当前局域网路由器获取一个桥接的内网IP。(注意观察屏幕)
Hyper-v默认通过smb方式进行客户机与主机进行文件共享。所以输入Windows的用户名和密码。
其实也可以通过新建一个新的用户,然后将code
目录以及Homestead
目录权限中加入这个新用户
安装vagrant-hostmanager
可以同步更新host文件