homestead安装过程记录:
公司的技术栈是laravel+homestead+element ui+vue.js
工欲善其事必先利其器。现在记录我花了2天时间:重装macos high sierra系统后开始安装的过程:
1⃣️:下载virtualbox(使用最新版)
2⃣️:下载vagrant(最好用最新的,这2个软件都是直接下载下来直接进行安装,如果git没有安装的话会提示我们安装)。
3⃣️:接下来我们就装box,也就是容器了,可以理解成一个集成了各种适合laravel的运行条件的环境。
首先你打开终端(iTerm更佳)输入命令:
1:安装 Homestead Vagrant 盒子
VirtualBox 和 Vagrant 安装好了之后,在终端中使用如下命令将
Homestead Vagrant 盒子 laravel/homesterad 添加到 Vagrant 中。下载该盒子将会花费一些时间,具体时间长短主要取决于你的网络连接速度:
vagrant box add laravel/homestead(远程下载,但是由于各种原因,你可能会下载一部分或者无法下载并且报错ssh erroe等,这时候你只能选择本地去进行添加盒子了),请尝试
—————————本地添加—————————————
首先下载virtualbox.box(网上自己找哦,我自己用的是5.2.0版本的),然后通过访达进入你的~(也是是用户根目录)=>/Users/你的用户名/Downloads下拥有一个json文件(可以用编辑器去生成,可以用sublime text)
metadata.json内容如下(
{
"name": "laravel/homestead",
"versions": [{
"version": "5.2.0",
"providers": [{
"name": "virtualbox",
"url": "/Users/lidongbin/Downloads/virtualbox.box”//这是你放virtualbox.box的地方。
}]
}]
}
)
,然后再cd ~/Downloads,输入命令:
vagrant box add metadata.json。执行成功。盒子添加成功。
—————————————————————————————
2:安装 Homestead
你可以通过克隆仓库代码来实现 Homestead 安装。将仓库克隆到用户目录下的 Homestead 目录,这样 Homestead 盒子就可以作为所有其他 Laravel 项目的主机:
cd ~
git clone https://github.com/laravel/homestead.git Homestead
克隆完成后,你需要检查 Homestead 的版本标签,因为 master 分支不会总是稳定版本,你可以在 GitHub Release Page 查找到最新稳定版本然后在本地将其检出:
cd Homestead
接下来,在 Homestead 目录下运行 bash init.sh 命令来创建 Homestead.yaml 配置文件,生成的 Homestead.yaml 配置文件文件位于当前 Homestead 目录:
// Mac/Linux...
bash init.sh
// Windows...
init.bat
配置 Homestead
设置 Provider
Homestead.yaml 文件中的 provider 键表示使用哪个 Vagrant 提供者:virtualbox、vmware_fushion、 vmware_workstation、parallels 或 hyperv,你可以将其设置为自己选择的提供者,当然对大部分人来说也没得选:
provider: virtualbox
配置共享文件夹
Homestead.yaml 文件中的 folders 属性列出了所有主机和 Homestead 虚拟机共享的文件夹,一旦这些目录中的文件有了修改,将会在本地和 Homestead 虚拟机之间保持同步,如果有需要的话,你可以配置多个共享文件夹:
folders:
- map: ~/Development
to: /home/vagrant/Code
如果你只是创建了很少的站点,使用一般的映射就够了。不过,随着站点数量的增加,你就会遇到性能问题,尤其是在包含大量文件的低端机器或项目中,性能问题可能会非常明显。如果你不幸遇到了这个问题,可以尝试映射每个项目到各自的 Vagrant 文件夹:
folders:
- map: ~/code/project1
to: /home/vagrant/code/project1
- map: ~/code/project2
to: /home/vagrant/code/project2
如果要开启 NFS,只需简单添加一个标识到同步文件夹配置:
folders:
- map: ~/Development
to: /home/vagrant/Code
type: "nfs"
注:使用 NFS 的话,需要考虑安装 vagrant-bindfs 插件。该插件可用于在 Homestead 盒子中为文件和目录维护正确的用户/组权限。
你还可以通过 options 传递其他 Vagrant 支持的同步文件夹选项:
folders:
- map: ~/code
to: /home/vagrant/code
type: "rsync"
options:
rsync__args: ["--verbose", "--archive", "--delete", "-zz"]
rsync__exclude: ["node_modules"]
配置 Nginx 站点
对 Nginx 不熟?没关系!通过 sites 属性你可以方便地将“域名”映射到 Homestead 虚拟机的指定目录,Homestead.yaml 中默认已经配置了一个示例站点。和共享文件夹一样,你可以配置多个站点:
sites:
- map: homestead.app
to: /home/vagrant/Code/Laravel/public
如果你是在 Homestead 盒子启动之后进行了上述修改,需要运行 vagrant reload --provision 更新虚拟机上的 Nginx 配置。
Hosts文件
不要忘记把 Nginx 站点配置中的域名添加到本地机器上的 hosts 文件中,该文件会将对本地域名的请求重定向到 Homestead 虚拟机,在 Mac 或 Linux上,该文件位于 /etc/hosts,在 Windows 上,位于 C:\Windows\System32\drivers\etc\hosts,添加方式如下:
192.168.10.10 homestead.test
确保 IP 地址和你的 Homestead.yaml 文件中列出的一致,一旦你将域名添加到 hosts 文件,就可以在浏览器中通过该域名访问站点了:
http://homestead.test
3:启动 Vagrant 盒子
配置好 Homestead.yaml 文件后,在 Homestead 目录下运行 vagrant up 命令,Vagrant 将会启动虚拟机并自动配置共享文件夹以及 Nginx 站点,初次启动需要花费一点时间进行初始化:
启动之后,就可以在浏览器中通过 http://homestead.test 访问 Laravel 应用了(前提是 Web 目录下已经部署 Laravel 应用代码)
在这里我遇到了一个问题,提示我:Check your Homestead.yaml file, the path to your private key does not exist.意思是说我没有设置ssh key。
那我们就去生成咯
分成三个命令:
ssh-keygen -t rsa -b 4096 -C [email protected]
eval "$(ssh-agent -s)"
ssh-add -K ~/.ssh/id_rsa
依次输入([email protected]是我的git账号也是我的邮箱,请输入你自己的,有需要输入password的时候直接回车就好了),解决。
要登录到该虚拟机,使用 vagrant ssh 命令;关闭该虚拟机,可以使用 vagrant halt 命令;销毁该虚拟机,可以使用 vagrant destroy --force 命令。
由于时间有限,我整理的有点乱,希望对大家有用。
借鉴:大部分的细节请到http://laravelacademy.org/post/8671.html