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#

怎么安装#

添加 laravel/homestead box 到本机#

安装的前提 是你的机器有虚拟机软件和 vagrant 软件,这里提示一点,vagrant 1.7.4 版本无法 upvirtualBox 5.0 的虚拟机,可以找 virtualBox 4.3.28 等版本

国内用户,你上的不是真互联网,是我国的局域网,所以如果用 laravel 官方网站推荐的方式基本安装会很费事。下面我提供我的方法和细节:

  1. 运行 vagrant box add laravel/homestead, 如果报错,很可能是你的 vagrant 版本是老版本,1.7.4 是没问题的,老版本请用下面的方式 Add:
    vagrant box add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead
  2. 一旦开始下载就按下 Ctrl+C, 将正在下载的地址拷贝下,用其他下载工具下载下来。地址应该是这样的:
    https://atlas.hashicorp.com/laravel/boxes/...
  3. 下载完毕了,将 box 添加到系统里:
    ## 执行add的目录下有我下载好的Homestead.box文件
    vagrant box add --name laravel/homestead Homestead.box

    成功提示:

    ==> box: Successfully added box 'laravel/homestead' (v0) for 'virtualbox'!
  4. 检查 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

上面的步骤都完了就可以进行下面的工作了.

  1. 运行 bash init.sh 来创建 Homestead 的配置文件 Homestead.yaml, 默认这个文件会被创建在 ~/.homestead 目录下.

    选读内容:
    Homestead.yaml 文件里有很多配置:
    provider 表示你的虚拟主机是哪种,virtualbox, vmware_fusion, or vmware_workstation

  2. Setting Your SSH Key
    默认情况下,Homestead.yaml 文件里配置的就是你生成钥匙对默认的位置和名称,所以,如果你确定你的有钥匙对 (~/.ssh 目录下,id_rsa 是私钥,id_rsa.pub 是公钥), 可以略过下面这句了,如果你没有,windows 用户,请选择 PuTTYPuTTYgen,Linux 和 Mac 可以用下面这句来生成密钥对:

    ## "you@homestead"填写你自己的邮箱或什么,随意~
    ssh-keygen -t rsa -C "you@homestead"
  3. Configuring Shared Folders
    Homestead.yaml 配置文件里的 folders 属性列出了所有你想共享给虚拟机的文件夹,mapto 分别对应的文件夹是同步的,你可以根据需哟配置更多的共享文件夹,map 对应的是本机,to 对应的是虚拟机里的文件夹,如果要支持 NFS, 可以加一行 type:"nfs"to 那一行的后面:

    folders:
    - map: ~/Code
      to: /home/vagrant/Code
  4. 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 端口.

  5. 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
  6. 配置完毕你的 Homestead.yaml 可以用 vagrant 启动它了. vagrant up, 如果想要销毁这个虚拟机,可以运行 vagrant destroy --force.--force 的意思是销毁过程中不在征求确认了,也可以简写为 -f

  7. Per Project Installation
    你所有的应用最后的配置和 box 不可能是一样的,每次可能会有些可以重复利用的部分,但你每次都要做,如果你想随同你的项目导出一份 Vagrantfile, 让其他人收益,少走弯路,你可以这么做:

    • 直接安装 Homestead 到你的项目下,然后用 Composerrequire 一下:
      composer require laravel/homestead --dev
    • 如果你的 Homestead 已经安装和部署了,可以在项目目录下,用 make 命令来生成:VagrantfileHomestead.yaml, 生成文件一般在你项目根目录.make 命令会自动将 sitesfolders 配置指令导入 Homestead.yaml
    • Mac/Linux 执行:
      php vendor/bin/homestead make
    • Windows 执行:
      vendor\bin\homestead make

最后一句,很好理解,懒得翻了:

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 for homestead.app or the domain of your choice.

日常使用 Daily Usage#

  1. 通过 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 登录

  2. 连接数据库 (Connecting To Databases):
    Homestead 自带两种数据库:MySQLPostgres, 你可以选择本地客户端的方式连接,比如利用 Navicat 或 Sequel Pro, 连接地址是 127.0.0.1, 连接端口是 33060 (MySQL) 或 54320 (Postgres). 帐号是 homestead/secret
    注意: 你只能在你的本机上访问数据库,并且虚拟机确实已经用 vagrant 启动成功

  3. 添加其他网站 (Adding Additional Sites):
    添加 sites 配置到你的 Homestead.yaml, 然后在 Homestead 目录下运行 vagrant provision. 注意: 一定要 vagrant provision 才能让新加的虚拟目录生效~~

  4. 端口 (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 进行重新配置即可。想要了解更多就去官方网站看看官方文档

本帖已被设为精华帖!
附言 1  ·  9年前

我是败了,本来想把 0.2.7 版本的 Homestead.box 上传到百度云上方便局域网的朋友下载,上传了好几次了,每次都是上传失败,Urumqi 这地方的网络下载受限我知道,无法浏览百度云上别人提供的地址,但是没想到,上传也是受限制的,屡败屡战,每次上传大小是对的,但是结果都是失败。等十一过后我回来了看能否用单位的网络成功上传吧,家里已经无能为力,抱歉了。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。