Laravel5.1/Homestead (0.2.7) 开发环境的部署和设置
以下内容我是在自己的博客上放着的,想想估计有人像用Homestead
但是没成,我就放这里来吧,
转帖希望能留下原作地址:
http://huifeng.me/2015/08/27/CMS-Developin...
laravel 5.1的中文文档还没有翻译完,反正Homestead这块没翻译,我今天看着原文搞完了,怕忘所以记了个笔记,大家可以将就着看吧.
什么是"laravel/Homestead"
它是laravel官方推荐和提供的一种开发环境,实际上就是一个虚拟机,为了让团队开发环境更加一致,为了让洁癖玩家能更加愉快的玩耍,作者提供了一套完整的PHP运行环境.
它的box在: https://atlas.hashicorp.com/
它的GitHub请自行在GitHub网站上搜索吧.
Included Software
- Ubuntu 14.04
- PHP 5.6
- HHVM
- Nginx
- MySQL
- Postgres
- Node (With PM2, Bower, Grunt, and Gulp)
- Redis
- Memcached
- Beanstalkd
- Laravel Envoy
- Blackfire Profiler
怎么安装
添加 laravel/homestead
box到本机
安装的前提 是你的机器有虚拟机软件和vagrant软件,这里提示一点,vagrant 1.7.4
版本无法up
virtualBox 5.0 的虚拟机,可以找virtualBox 4.3.28等版本
国内用户,你上的不是真互联网,是我国的局域网,所以如果用laravel官方网站推荐的方式基本安装会很费事.下面我提供我的方法和细节:
- 运行
vagrant box add laravel/homestead
,如果报错,很可能是你的vagrant版本是老版本,1.7.4
是没问题的,老版本请用下面的方式Add:vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead
- 一旦开始下载就按下
Ctrl+C
,将正在下载的地址拷贝下,用其他下载工具下载下来.地址应该是这样的:
https://atlas.hashicorp.com/laravel/boxes/... - 下载完毕了,将box添加到系统里:
## 执行add的目录下有我下载好的Homestead.box文件 vagrant box add --name laravel/homestead Homestead.box
成功提示:
==> box: Successfully added box 'laravel/homestead' (v0) for 'virtualbox'!
- 检查box列表:
vagrant box list
后应该可以看到有一个box是laravel/homestead
,说明box add 成功了.
部署Homestead环境
回到官方文档继续操作,先克隆一份box作者的git,比如,我想在我的用户根目录下添加一个Homestead目录用于这个项目,那么:
git clone https://github.com/laravel/homestead.git Homestead
只能上局域网的请试图用各类神奇和办法翻墙或改hosts文件,做到至少能访问github.
顺便推荐一个hosts更新网址,有了它你总可以上github了吧:老D博客,好人长命,如果你行,请给他点赞助.谢谢!!
如果你的Homestead
文件夹已经有段时间没更新了,可以这么更新:git pull
上面的步骤都完了就可以进行下面的工作了.
-
运行
bash init.sh
来创建Homestead的配置文件Homestead.yaml
,默认这个文件会被创建在~/.homestead
目录下.选读内容:
Homestead.yaml文件里有很多配置:provider
表示你的虚拟主机是哪种,virtualbox
,vmware_fusion
, orvmware_workstation
-
Setting Your SSH Key
默认情况下,Homestead.yaml
文件里配置的就是你生成钥匙对默认的位置和名称,所以,如果你确定你的有钥匙对(~/.ssh
目录下,id_rsa
是私钥,id_rsa.pub
是公钥),可以略过下面这句了,如果你没有,windows用户,请选择PuTTY和PuTTYgen,Linux和Mac可以用下面这句来生成密钥对:## "you@homestead"填写你自己的邮箱或什么,随意~ ssh-keygen -t rsa -C "you@homestead"
-
Configuring Shared Folders
Homestead.yaml
配置文件里的folders
属性列出了所有你想共享给虚拟机的文件夹,map
和to
分别对应的文件夹是同步的,你可以根据需哟配置更多的共享文件夹,map
对应的是本机,to
对应的是虚拟机里的文件夹,如果要支持 NFS,可以加一行type:"nfs"
在to
那一行的后面:folders: - map: ~/Code to: /home/vagrant/Code
-
Configuring Nginx Sites
Not familiar with Nginx? No problem.sites
属性可以让你方便的部署自己在虚拟机上的虚拟目录,Homestead.yaml
文件里应该已经有一个配置了,可以做为样例来参考.sites: - map: homestead.app alias: square.app to: /home/vagrant/Code/Laravel/public
意思是,如果有访问
homestead.app
这个域名的请求,虚拟机会直接将请求接引到/home/vagrant/Code/Laravel/public
目录,而这个目录实际上和本地环境有映射,被映射到了~/Code/Laravel/public
.
默认是php-fpm来解析PHP,如果你喜欢,也可以选择用HHVM来解析,例如:sites: - map: homestead.app to: /home/vagrant/Code/Laravel/public hhvm: true
默认情况下,本地HTTP的8000端口被映射到了虚拟机的80端口,HTTPS的44300端口被映射到了虚拟机的443端口.
-
Configuring The Hosts File
为了方便本地开发和测试,我们一般会修改我们的hosts文件,让相应的域名不出去,直接在本机上被解析指向指定的IP,如果这个被制定的IP是虚拟机的IP地址,那就实现了,浏览器访问homestead.app
这个网站,实际上访问的是虚拟机上的该网站,这个结果正是我们需要的. 这么修改:- Linxu & Mac OS:
sudo vim /etc/hosts
- windows:
notepad C:\Windows\System32\drivers\etc\hosts
- 改为类似格式:
192.168.10.10 homestead.app
- 确定一下你的配置文件
Homestead.yaml
里的IP是否是hosts里陪的IP.如果以上都没有问题,虚拟机用vagrant启动起来后,此时应该可以访问这个你刚添加的网站了:http://homestead.app
- Linxu & Mac OS:
-
配置完毕你的
Homestead.yaml
可以用vagrant启动它了.vagrant up
,如果想要销毁这个虚拟机,可以运行vagrant destroy --force
.--force
的意思是销毁过程中不在征求确认了,也可以简写为-f
-
Per Project Installation
你所有的应用最后的配置和box不可能是一样的,每次可能会有些可以重复利用的部分,但你每次都要做,如果你想随同你的项目导出一份Vagrantfile,让其他人收益,少走弯路,你可以这么做:- 直接安装Homestead到你的项目下,然后用Composer
require
一下:composer require laravel/homestead --dev
- 如果你的Homestead已经安装和部署了,可以在项目目录下,用
make
命令来生成:Vagrantfile
和Homestead.yaml
,生成文件一般在你项目根目录.make
命令会自动将sites
和folders
配置指令导入Homestead.yaml
- Mac/Linux 执行:
php vendor/bin/homestead make
- Windows 执行:
vendor\bin\homestead make
- 直接安装Homestead到你的项目下,然后用Composer
最后一句,很好理解,懒得翻了:
Next, run the
vagrant up
command in your terminal and access your project at http://homestead.app in your browser. Remember, you will still need to add an/etc/hosts
file entry forhomestead.app
or the domain of your choice.
日常使用 Daily Usage
-
通过SSH连接虚拟机(Connecting Via SSH):
你可以选择每次都进入Homestead的根目录运行vagrant ssh
,也可以选择加个自定义命令到环境变量,让你下次只需要输入vm
即可进入虚拟主机:alias vm="ssh vagrant@127.0.0.1 -p 2222"
建议: 把这里的127.0.0.1换成你分配给Homestead的专有IP,否则可能你有别的vagrant主机时会因为SSH不符合,还得到Homestead目录下去ssh登录
-
连接数据库(Connecting To Databases):
Homestead 自带两种数据库:MySQL
和Postgres
,你可以选择本地客户端的方式连接,比如利用Navicat或Sequel Pro,连接地址是127.0.0.1
,连接端口是33060
(MySQL) 或54320
(Postgres).帐号是homestead/secret
注意: 你只能在你的本机上访问数据库,并且虚拟机确实已经用vagrant启动成功 -
添加其他网站(Adding Additional Sites):
添加sites
配置到你的Homestead.yaml
,然后在Homestead目录下运行vagrant provision
. 注意: 一定要vagrant provision
才能让新加的虚拟目录生效~~ -
端口(Ports)
以下端口映射为Homestead 默认配置:- SSH: 2222 → Forwards To 22
- HTTP: 8000 → Forwards To 80
- HTTPS: 44300 → Forwards To 443
- MySQL: 33060 → Forwards To 3306
- Postgres: 54320 → Forwards To 5432
如果你想转发其他端口并指定协议,可以配置Homestead.yaml
文件:
ports:
- send: 93000
to: 9300
- send: 7777
to: 777
protocol: udp
Blackfire Profiler(Blackfire分析器)
Blackfire Profiler是一款自动收集你代码的执行数据(RAM, CPU, diskI/O)的工具,Homestead可以让你很轻松的将其应用在你自己的应用里.
所有依赖包都已经安装好了,你只需要在Homestead.yaml
中配好Blackfire的服务ID和token即可,例如:
blackfire:
- id: your-server-id
token: your-server-token
client-id: your-client-id
client-token: your-client-token
如果你配置了Blackfire,重新在Homestead目录下运行vagrant provision
进行重新配置即可.想要了解更多就去官方网站看看官方文档吧
我是败了,本来想把0.2.7版本的 Homestead.box
上传到百度云上方便局域网的朋友下载,上传了好几次了,每次都是上传失败,Urumqi 这地方的网络下载受限我知道,无法浏览百度云上别人提供的地址,但是没想到,上传也是受限制的,屡败屡战,每次上传大小是对的,但是结果都是失败。等十一过后我回来了看能否用单位的网络成功上传吧,家里已经无能为力,抱歉了。