搭建laravel/homestead虚拟化开发环境 - 解决下载源慢与yaml配置不生效问题
本文章解决如下问题
1.使用官方文档安装 laravel/homestead 实在太慢;
2.手动下载box解压安装后使用 vagrant up 又会重新下载box ;
3.Homestead.yaml配置不生效
软件准备
1.Git
3.vagrant
4.laravel/homestead 的box
*可通过 vagrant box add laravel/homestead 时出现的下载链接,复制下载后更名为homestead.box。
以上如有迅雷会员,可以加速下载。
安装 Homestead
git克隆项目
git clone https://github.com/laravel/homestead.git ~/Homestead
如果是windows系统, ~/Homestead 改为绝对路径
可以checkout更新最新稳定版本的 release
分支
cd ~/Homestead
git checkout release
执行init脚本来创建Homestead.yaml配置文件
// Mac / Linux... bash init.sh // Windows... init.bat
手动创建Homestead.json文件
{
"name": "laravel/homestead",
"versions": [{
"version": "9.5.1", //等于或大于下载的laravel/homestead box版本
"providers": [{
"name": "virtualbox",
"url": "file://homestead.box" //应为下载的laravel/homestead box绝对路径
}]
}]
}
创建id_rsa
mkdir .ssh //创建.ssh目录 ssh-keygen -t rsa -C "youremail@example.com" //创建rsa,提示保存路径和输入密码
会提示保存id_rsa的文件路径,保存到.ssh目录即可,必须为绝对路径。
修改Homestead.yaml
先将ip地址改为virtualbox仅主机网卡所在的域,一般为192.168.56.1
---
ip: "192.168.56.100"
memory: 2048
cpus: 2
provider: virtualbox
...
如为windows系统,authorize,keys,folders,sites等配置中的 ~需要为绝对路径。
folders为共享文件夹映射,建议直接在Homestead目录创建。
sites为网站项目目录映射,建议同上。
至此Homestead下载配置完成。
安装 Homestead Vagrant Box
cd ~/Homestead
vagrant box add Homestead.json
*可通过vagrant box list 查看安装的box情况。
*若出错,可使用vagrant destroy --force && vagrant box remove laravel/homestead 删除虚拟机解决问题后再重新安装。
启动box,必须要在Homestead目录执行,需要等待一小段时间
vagrant up
如果启动后修改了Homestead.yaml配置,可以执行provision更新虚拟机配置
vagrant reload --provision
启动后,可以使用 vagrant ssh 命令远程管理box。
SSH账户密码一般为vagrant/vagrant
数据库用户名和密码分别是 homestead / secret
宿主机浏览器访问box的ip即可访问,建议将sites域名添加到宿主机host。
全局访问Homestead
在 Mac / Linux 系统上可以在 Bash 配置文件( ~/.bash_profile
)中添加 Bash 函数
function homestead() { ( cd ~/Homestead && vagrant $* ) }
在Windows系统的任意位置创建一个批处理文件 homestead.bat(建议还是 Homestead目录)
,内容如下:
@echo off set cwd=%cd% set homesteadVagrant=C:\Homestead //这里需要为你的Homestead目录实际路径 cd /d %homesteadVagrant% && vagrant %* cd /d %cwd% set cwd= set homesteadVagrant=
创建后需将路径添加到系统变量PATH。
该脚本/函数实际为切换到~/Homestead目录和执行vagrant命令,完成后可直接使用homestead替代vagrant命令在系统任意位置管理homestead虚拟机box。
homestead up homestead ssh
更多参考
https://learnku.com/docs/laravel/7.x/homestead/7450#installation-and-setup