laravel官方推荐的Homestead工作环境,安装简单,使用方便,推荐给使用laravel开发项目的程序猿。
本机操作系统:64位Win10
▧ 一:前期工作:软件准备(下载)
1:虚拟机,推荐免费的 VirtualBox 5.1,官网下载地址 | 百度网盘(密码24es)
2: Vagrant,官网下载地址 | 百度网盘(密码uak6)
4: Homestead,代码托管在 https://github.com/laravel/homestead
说明: Homestead不是一个软件,是laravel开发一个小项目,基于php,c,ruby.,js开发的。
安装方式有2 种,1是直接在github下载zip后解压到合适的位置,2是git克隆
5: vagrant的一个盒子叫做 homestead box
安装方式2种,1是在线安装(在国内此方法太慢,不适用)2是下载盒子后离线安装(推荐)
官网下载:https://app.vagrantup.com/boxes/search中搜索Homestead,最新版本是4.0.0
下载地址是: https://vagrantcloud.com/laravel/boxes/homestead/versions/4.0.0/providers/virtualbox.box
▧ 二:盒子安装
1: 安装 VirtualBox, vagrant, git
2: 盒子安装
a:新建安装配置文件0000.json
内容如下
{
"name": "laravel/homestead","versions": [{
"version": "4.0.0",
"providers": [{
"name": "virtualbox",
"url": "04_homesteadbox400"
}]
}]
}b: 将盒子安装配置文件0000.json和盒子04_homesteadbox400,放在同一个文件夹下,只要改文件夹不含中文就行,如放在E:/abc def/下(文件夹有空格也没关系)
说明1:0000.json是安装盒子时读取的盒子安装配置文件,名字任取,只要格式是json的就行了。
说明2:04_homesteadbox400是box文件,名字也可以改的
说明3: 配置文件和盒子文件最好放在同一个文件夹中,这两个文件在安装完后是可以删除的(此处改为:配置文件0000.json最好保留),所在文件夹名不能是中文,有空格可以,如E:/abc def/0000.json可以
说明4:盒子安装在用户目录C:\Users\用户名\.vagrant.d\boxes中,我的用户名是 Administrator
说明5:显示安装了哪些>vagrant box list,删除某个box命令是 C:\Users\Administrator>vagrant box remove laravel/homestead
说明6:如果不知道哪里下载box,请先用 vagrant box add laravel/homestead,会显示从哪里下载,因为在线下载实在太慢,可改用迅雷下载下来后改名为配置文件中指定的名字
D:\homestead>vagrant box add 0000.json
▧ 三:homestead安装和配置
说明1: homestead是laravel开发的一个项目,托管在https://github.com/laravel/homestead,可以安装在任何位置,我喜欢安装在D盘的根目录下,可以下载zip文件解压也可以直接git clone安装
说明2: homestead的版本必须与下载的box版本一样,当前homestead的版本与box的版本是4.0.0
说明3: homestead不要放在有 “下划线或空格" 的文件夹下面,虚拟机在加载共享文件夹时会忽略
D:\www2018>git clone https://github.com/laravel/homestead.git
将homestead配置文件从D:\www2018\homestead\resources\Homestead.yaml拷贝到D:\www2018\homestead,也可执行init.bat自动拷贝
D:\www2018\homestead>init
编辑配置文件Homestead.yaml
编辑文件C:\Windows\System32\drivers\etc\hosts
▧ 四:vagrant 启动
vagrant在启动时要读取它相应的配置文件 Vagrantfile,查找配置文件的顺序官网这样说: https://www.vagrantup.com/docs/vagrantfile/#lookup-path ,首先在当前项目中找,当前项目中没有就到父目录中找。但laravel/homestead项目中已经定义好了Vagrantfile了,是用ruby写的,这个文件会读取script中的文件,所以建议当前vagrant工作目录为Vagrantfile所在目录
另外要注意的是,一定要保证C盘有足够的空间
D:\www2018\homestead>vagrant up
最后补充一点就是,如果错误提示
> Check your Homestead.yaml file, the path to your private key does not exist.
说明你电脑没有生成ssh密钥,要生成密钥,前提是你电脑安装了git,安装后在Git安装目录\usr\bin(我电脑上是D:\Program Files\Git\usr\bin)下有一个ssh-keygen.exe文件,执行这个文件就可以,
```
D:\Program Files\Git\usr\bin>ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/qianjin.DESKTOP-GVP6V4L/.ssh/id_rsa):
Created directory '/c/Users/qianjin.DESKTOP-GVP6V4L/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /c/Users/qianjin.DESKTOP-GVP6V4L/.ssh/id_rsa.
Your public key has been saved in /c/Users/qianjin.DESKTOP-GVP6V4L/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:6rY8ncNu8m2V8RRPfYrezEqsIG+Lsi3H0EVfXMsBIDk qianjin@DESKTOP-GVP6V4L
The key's randomart image is:
+---[RSA 2048]----+
| ...o.oo .|
| E. o..o+|
| . o . .o=.|
| . . o o .|
| . .S o O |
| . o.. * = |
| o.= o + . |
| o+*.O.o . |
| .**O++. |
+----[SHA256]-----+
```
会在当前用户目录/c/Users/today.DESKTOP-GVP6V4L/.ssh/(如果管理员登录是C:\Users\Administrator\.ssh)下面生成2个文件id_rsa和id_rsa.pub
常见问题
1: A VirtualBox machine with the name 'homestead-7' already exists.Please use another name or delete the machine with the existing name, and try again.
解决:
D:\03www2018\homestead>vagrant global-status
id name provider state directory
-----------------------------------------------------------------------------
900a608 homestead-7 virtualbox running D:/03_www2018/homestead
48f672c homestead-7 virtualbox poweroff D:/03www2018/homestead
The above shows information about all known Vagrant environments
on this machine. This data is cached and may not be completely
up-to-date. To interact with any of the machines, you can go to
that directory and run Vagrant, or you can use the ID directly
with Vagrant commands from any directory. For example:
"vagrant destroy 1a2b3c4d"
先使用vagrant box remove xxx 删除当前盒子,再vagrant global-status看有哪个虚拟盒子存在,使用vagrant destroy xx删除,再使用vagrant box add 0000.json的方式重新安装盒子
上面处理还是报错?
最终解决办法是使用VBoxManage来删除
D:\Program Files\Oracle\VirtualBox>VBoxManage list vms
"homestead-7" {84452234-fb51-48a5-bedd-72fda9e99664}
"virtualbox_default_1508157323631_85955_1509326648170_26616" {a12e995a-6193-4370-b06f-0f01b6a2fe08}
D:\Program Files\Oracle\VirtualBox>VBoxManage unregistervm homestead-7 --delete
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%