Vagrant可以很好的帮我们管理虚拟机,一句话介绍 开发环境变得简单
要先安装 VirtualBox 6.x
, 下载地址: VirtualBox下载
接着安装 Vagrant
, 下载地址 下载地址 Vagrant下载
下载好对应系统的软件, 双击安装, 一路下一步即可, 安装完成之后, 重启电脑
安装完成之后, 检查一下是否安装完成, cmd
中运行:
vagrant -v
cmd
执行命令,添加远程BOX
vagrant box add laravel/homestead
添加本地BOX
vagrant box add laravel/homestead ./???.box
安装 Homestead
考虑掉有不会使用Git的, 所以这里就不使用 Git 克隆了, 你可以点击这里直接下载
git clone https://github.com/laravel/homestead.git ~/Homestead
切换到最新的稳定版
cd ~/Homestead
git checkout release
cmd
中进入到这个目录, 执行 init.bat
命令以创建 Homestead.yaml 配置文件。Homestead.yaml 将会置于 Homestead 目录中:
// macOS / Linux...
bash init.sh
// Windows...
init.bat
修改配置文件
修改版本号, 之前现在的box可能和这里需要的版本号不一致
首先查看版本号:
vagrant box list
修改 ~/Homestead/script/homestead.rb
配置文件, 找到 config.vm.box_version = settings['version'] ||= '>= 11.0.0, < 12.0.0'
, 改为:
config.vm.box_version = settings['version'] ||= '>= 0.0.0, < 12.0.0
配置共享文件夹, 在桌面创建 workspack
目录, 用于我们的工程目录, 设置 wokspace
同步到虚拟机中的 /home/vagrant/code
目录:
Windows 用户不应使用~/
路径语法,而应使用其项目的完整路径,例如C:\Users\user\Code\project1
folders:
- map: C:\Users\m1339\Desktop\project1\
to: /home/vagrant/code
Mac用户
folders:
- map: ~/wokspace/project1
to: /home/vagrant/code
您应该始终将单个应用程序映射到它们自己的文件夹,而不是映射包含所有应用程序的单个大目录。映射文件夹时,虚拟机保持跟踪文件夹中 每一个 文件的所有磁盘 IO。当文件夹中有大量文件时,此举可能影响性能。
folders:
- map: ~/code/project1
to: /home/vagrant/project1
- map: ~/code/project2
to: /home/vagrant/project2
共享文件夹是为了将你本机的某个文件夹里面的代码, 同步到虚拟机中的某个目录
配置 Nginx 站点:
sites 属性将允许您轻松的将「域名」映射到 Homstead 环境中的目录中去。Homestead.yaml 中包含了一个简单的站点配置。同样,您可以按需添加许多站点到您的 Homestead 环境中。
sites:
- map: blog.test
to: /home/vagrant/code/blog
如果您在启动了 Homestead box 后修改了 site 属性,您需要再次运行 vagrant reload --provision
命令以更新虚拟机中的 Nginx 配置
域名解析:
修改 C:\Windows\System32\drivers\etc\hosts
。添加到 hosts 文件中的记录如下:
192.168.10.10 laravel.test
ip 为 Homestead.yaml 中配置的ip,如果你是Mac用户你可以使用
sudo vim /etc/hosts
修改hosts。
生成公钥和私钥
公钥和私钥是本机和虚拟机认证的默认方式, 下面的配置使用了家目录下.ssh
目录中的公钥和私钥:
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
如果您的家目录,没有这个目录, 或者这个目录中没有公钥和私钥, 可以使用命令进行创建, 打开CMD命令行,执行:
ssh-keygen
一直回车即可
完整配置参考
---
ip: "192.168.10.10"
memory: 2048
cpus: 2
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: C:\Users\m1339\Desktop\wokspace\blog
to: /home/vagrant/code/blog
sites:
- map: blog.test
to: /home/vagrant/code/blog/public
databases:
- homestead
features:
- mysql: false
- mariadb: false
- ohmyzsh: false
- webdriver: false
# ports:
# - send: 50000
# to: 5000
# - send: 7777
# to: 777
# protocol: udp
启动 Vagrant Box
启动命令为, 在 Homestead
目录下执行 cmd 命令:
vagrant up
在启动动的过程中, 会进行公钥和私钥的认证, 请确保你已在家目录中的
.ssh
生成了私钥和公钥
刷新配置
如果你在 vagrant
的运行中, 修改配置, 需要在 Homestead
目录中刷新配置:
vagrant reload --provision
默认的一些用户
默认的Linux用户:
UserName: vagrant
Password: vagrant
默认的数据库用户:
UserName: homestead
Password: secret
ssh连接到虚拟机
执行 cmd
命令:
vagrant ssh
关闭虚拟机
如果暂时不用这个虚拟机了, 可以关闭虚拟机:
vagrant halt
销毁虚拟机
如果不需要这个虚拟机了, 或者这个虚拟机出现了很大的问题, 可以销毁虚拟机, 执行 cmd
命令:
vagrant destroy --force
改命令会销毁虚拟机, 慎用
如果还要用, 可以重新构建:
vagrant up
终端连接进入服务器, 更换composer国内源:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
composer clear-cache # 此步奏选择性操作,清除所有 package 缓存。
进入 /home/vagrant/code目录,安装laravel:
composer create-project --prefer-dist laravel/laravel blog
修改代码同步目录,和站点设置, 修改~/Homestead/homestead.yaml:
folders:
- map: C:\Users\yourUser\Desktop\workspace\blog
to: /home/vagrant/code/blog
sites:
- map: blog.test
to: /home/vagrant/code/blog/public
退出服务器, 在本机cmd重启vagrant并刷新配置, 终端要在Homestead目录:
vagrant reload --provision
修改本机host文件, ip为homestead.yam里面配置的ip:
192.168.10.10 blog.test
浏览器测试:
http://blog.test
销毁虚拟机, 终端在Homestead目录:
vagrant destory --force
不一定能删干净,要彻底删除,去删除C:\Users\yourUser\VirtualBox VMs目录里面的homestead目录
删除box:
vagrant box list
vagrant box remove boxName
boxName
是你vagrant box list
看到的名字