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 这地方的网络下载受限我知道,无法浏览百度云上别人提供的地址,但是没想到,上传也是受限制的,屡败屡战,每次上传大小是对的,但是结果都是失败。等十一过后我回来了看能否用单位的网络成功上传吧,家里已经无能为力,抱歉了。
推荐文章: