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  ·  8年前

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 14
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!