Sweety

Practice makes perfect

导航

搭建环境从来都是阻挡一门新技能的最致命的硬伤,为了这个环境,我又是花费了半天的时间,各种问题层出不穷,下面基于网上的一些教程(我看到的都多少有些问题骂人

开始的时候是在实验楼这个平台上开始学习的,不过 这个平台对于入门还真的是很好的,不过后期因为结合项目还有一些权限问题就不够了,入门推荐实验楼(怎么和打广告一样啊偷笑


一. 环境

Laravel 对环境有一定的要求:

PHP >= 5.5.9

OpenSSL PHP Extension

PDO PHP Extension

Mbstring PHP Extension

Tokenizer PHP Extension

二. 搭建laravel的辅助平台

1.   Homestead

说到环境,就不得不说 Homestead,Homestead 是 Laravel 官方预封装的一套开发环境。在Laravel 的开发中,强烈建议使用 Homestead,不论是一个人开发项目,还是团队开发。

2.   VirtualBox

想了解 Homestead 是什么,首先要介绍一下 VirtualBox 和 Vagrant。

VitrualBox 是一款非常强大的免费虚拟机软件,使用者可以在 VitrualBox 上安装并运行 Linux、Windows、Mac OS X 等操作系统,类似的软件还有 VMware 等,对虚拟机不熟悉的小伙伴可以稍微补习一下相关知识,这里不多做介绍。

3.   Vagrant

接下来介绍 Vagrant,有过开发经验的同学可能会有这样的经历,每次开始一个新的项目,必然要先搭建开发环境,不同的开发者可能习惯使用不同的系统,有人用 windows,有人用 mac,有人用 linux,在搭建环境的过程中又有可能会遇到各种 BUG 各种坑,代码还没开始写,搭环境就先用掉几天时间..很是头疼,于是,为了解决这个问题,Vagrant 应运而生...

4.   关系

Vagrant 是一个用于创建和部署虚拟化开发环境的工具,其依赖于 VirtualBox 虚拟机,致力于帮助开发者快速构建一个环境统一的虚拟系统。

Vagrant 可以将一整套虚拟环境封装在一个box 内,这样只要所有人都使用这个 box,大家的开发环境就实现统一了!而 Homestead 就是这样一个 Laravel 官方预装的适合 Laravel 开发的 Vagrant box 。

Homestead 可以在 Windows、Mac 或 Linux 系统上面运行,里面包含了 NginxWeb 服务器、PHP 5.6、MySQL、Postgres、Redis、Memcached、Node,以及所有你在使用 Laravel 开发时所需要用到的各种软件。

附注: 如果你是 Windows 用户,你可能需要启用硬件虚拟化(VT-x)。这通常需要通过 BIOS 来启用它。

Homestead 内置软件列表:

Ubuntu 14.04

Node(附带了PM2、Bower、Grunt、 Gulp)

Git

HHVM

PHP 5.6 / 7.0

Postgres

MySQL

Nginx

Sqlite3

Xdebug

Composer

Redis

Memcached(仅限 PHP 5.x)

Beanstalkd

这里提到了很多的专有名词,你不一定非要弄懂每个是什么意思,可以在以后的实践和摸索中慢慢的渗透和学习!

三. Homestead 安装

  • VirtualBox 安装
  • Vagrant 安装
  • 添加 Homestead box 到 vagrant
  • 安装 Homestead
  • 配置 Homestead.yaml 文件

1.VirtualBox 安装

访问VirtualBox 官网,下载当前操作系统相对应的安装包。

下载完成后,双击打开按照提示完成安装即可。

2.Vagrant 安装

访问Vagrant 官网,下载当前操作系统相对应的安装包。

下载完成后,双击打开按照提示完成安装即可。

3.添加 Homestead box 到 vagrant

首先打开命令行

注意:Windows 用户请不要使用系统自带的命令行,可以使用 cmder 或 Git 的 Git-bash。

进入 ~ 目录(该目录在 C:\Users\你的计算机用户名)

cd ~

 

输入添加 Homestead box 的指令:

vagrantbox add laravel/homestead

 

如果上面的命令运行失败,代表你使用的可能是旧版的 Vagrant,需要在命令行后补上下载包的完整 URL:

vagrantbox add laravel/homestead https://atlas.hashicorp.com/laravel/boxes/homestead

如果你的下载安装正常,那么直接从这里跳转到步骤4就好了!!

 

这里注意了,不少教程都这么写,但是往往是不FQ是不行的,所以还是需要解决这个问题,这时只能通过手动来添加 box 了。

手动添加方式:

  • 选择一 : 当你使用官方下载命令时,你的终端会显示这个文件的源地址复制,然后按ctrl +c退出,然后用的喜欢的下载软件下载.
  • 选择二 : phphub上的virtualbox.box

这里我选择了第一种方式,用了一个lantern,很快的,每秒3M,没几分钟就把900+M的文件下载完了!

现在我假设你已经拥有这个文件,现在来用我们的方法添加virtualbox.box .
打开你的ide(代码编译器) ,一般为 Sublime Text 和 Atom ,为何要提编译器呢 , 因为下面的步骤可能会需要其中一个的编译器 , 创建一个名为a.json的文件 , 输入以下内容 :arrow_down:

{
        "name":"laravel/homestead",
        "versions":
[
    {
        "version": "0.5.0",   //这里一定要修改版本号!!!在上面的那个路径里面有,我的是3.0.0 不改后面一定会报错的!!!如下图
        "providers": [
            {
              "name":"virtualbox",
              "url":"D:/box/virtualbox.box"  //你下载的virtualbox.box在电脑系统上的位置
            }
        ]
    }
]
}


 

打开的 IDE (编译器) 先不要保存,点击开始菜单或 win 快捷键 , 在搜索栏处输入你的terminal ( 终端 ), 点击鼠标右键以管理员身份运行,一般会跳转到 :

C:\Users\windows的账户名>

然后回到 IDE (编译器) 保文件到C:\Users\windows的账户名这个目录下 , 并且命名为a.jso

C:\Users\windows的账户名>vagrant box add a.json
会出现:
==>box: Loading metadata for box 'a.json'

box: URL:file://C:/Users/windows的账户名/a.json

==>box: Adding box 'laravel/homestead' (v3.0.0) for provider: virtualbox

box:Downloading: "D:/box/virtualbox.box" //你下载的virtualbox.box在电脑上的位置

box:Progress: 100% (Rate: 129M/s, Estimated time remaining: --:--:--)
==>box: Successfully added box 'laravel/homestead' (v3.0.0) for 'virtualbox'!


4.安装Homestead

添加完 Homestead box 之后还需要进行一些配置来完成 Homestead 的安装。

首先,请确定你的电脑上安装了Git

  • 1)Windows 系统直接下载安装 Git for Windows
  • 2)Mac 用户可通过安装 Xcode 命令行来快速安装 Git:

xcode-select--install

  • 3)Linux 系统使用以下命令快速安装:
sudoyum install git
sudoapt-get install git //Debian Linux


然后,打开命令行,进入~目录

cd ~

 

通过克隆代码仓库的方式来安装Homestead:

gitclone https://github.com/laravel/homestead.git Homestead

 

克隆完 Homestead 的代码仓库后,会生成一个Homestead文件夹,进入该目录

cd~/Homestead

 

执行bash init.sh命令来创建Homestead.yaml配置文件,Homestead.yaml文件将会被放置在你的~/.homestead 目录中

bashinit.sh

最后,我们需要用编辑器打开Homestead.yaml文件对 Homestead 进行配置。

编辑器选择:不要用 windows 的记事本作为代码编辑器(这里好像是可以的,不过我没试过),这里推荐一些常用编辑器:

·        轻量编辑器:Atom、Sublime、Notepad++

·        集成开发环境编辑器:PHPstorm

5.设置Homestead.yaml文件

用编辑打开~/.homestead/Homestead.yaml 文件。

Homestead.yaml中的初始代码如下:

---

ip:"192.168.10.10"

memory:2048

cpus:1

provider:virtualbox

 

authorize:~/.ssh/id_rsa.pub

 

keys:

    - ~/.ssh/id_rsa

 

folders:

    - map: ~/Code

      to: /home/vagrant/Code

 

sites:

    - map: homestead.app

      to: /home/vagrant/Code/Laravel/public

 

databases:

    - homestead

 

variables:

    - key: APP_ENV

      value: local

 

#blackfire:

#     - id: foo

#       token: bar

#       client-id: foo

#       client-token: bar

 

#ports:

#     - send: 93000

#       to: 9300

#     - send: 7777

#       to: 777

#       protocol: udp

 

下面我们对该文件中的代码逐个进行分析配置:

最上面是对虚拟机的 ip,内存,CPU,虚拟机的默认提供者的配置,这里不需要修改。

ip:"192.168.10.10"

memory:2048

cpus:1

provider:virtualbox

Homestead 需要用 ssh 方式连接虚拟机,ssh 连接需要设置秘钥,可以看出默认的 key 应该是放在~/.ssh文件夹下的,这里也不需要做修改。

authorize:~/.ssh/id_rsa.pub

keys:

         - ~/.ssh/id_rsa

ssh key 需要我们手动生成,如果你之前已经用过ssh连接,这一步可以跳过。

通过运行下面命令来生成 ssh key:

ssh-keygen-t rsa -C "your_email@example.com"

Generatingpublic/private rsa key pair.

 

出现下面提示信息时,按回车键将 SSH Key 保存到默认位置:

Entera file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]

 

为 SSH Key 设置密码,不输入则默认为空密码:

Enterpassphrase (empty for no passphrase): [Type a passphrase]

Entersame passphrase again: [Type passphrase again]

 

继续来到 Homestead.yaml 文件的配置,下面的 folders 是设置代码文件位置和虚拟机中共享文件的位置的。

folders:

    - map: ~/Code

      to: /home/vagrant/Code

比如我的修改成如下设置,我们假设F盘有一个叫做 laravel 的文件夹,专门用来存放 laravel 的项目。

folders:

    - map: D:/laravel

      to: /home/vagrant/Code

这样设置之后F盘的laravel 文件夹就和 虚拟机中的这个Code 文件夹共享了。

然后是映射域名的配置,如下面sites配置所示,将 homestead.app 映射到一个 Laravel 项目的 public 文件夹下,通过增加这行配置之后,如果你的 Code 文件夹中有一个叫 Laravel 的项目,则可以通过http://homestead.app来访问该 Laravel 应用。

sites:

    - map: homestead.app

      to: /home/vagrant/Code/Laravel/public

 

除此之外,你还需要将这个域名添加到 hosts 文件中,Windows 系统下该文件放在 C:\Windows\System32\drivers\etc\hosts,Mac 或 Linux 系统 host 文件放在 /etc/hosts 或者 /private/etc/hosts 文件夹下,添加方式:打开 hosts 文件,在最底下添加如下代码:(这里windows权限的问题,hosts只能在管理员权限下修改,所以在电脑win搜索找记事本,右键管理员权限打开,再打开hosts修改就好了!

192.168.10.10homestead.app

 

然后是数据库设置:

databases:

    - homestead

 

数据库的设置和 sites 的设置是对应的,比如你有两个项目,对应设置应该像这样:(这里我的都叫homestead)

sites:

    - map: myweb.app

      to: /home/vagrant/Code/myweb/public

    - map: myweb2.app

      to: /home/vagrant/Code/myweb2/public

 

databases:

    - myweb

    - myweb2

 

最后,如果你需要定义一些在虚拟机上可以使用的自定义变量,则可以在 variables 中进行定义。

variables:

    - key: APP_ENV

      value: local

 

综上,一个设置好的 Homestead.yaml 文件代码示例:

---

ip:"192.168.10.10"

memory:2048

cpus:1

provider:virtualbox

 

authorize:~/.ssh/id_rsa.pub

 

keys:

    - ~/.ssh/id_rsa

 

folders:

    - map: D:\laravel

      to: /home/vagrant/Code

 

sites:

    - map: homestead.app

      to: /home/vagrant/Code/laravel/public

    - map: myweb.app

      to: /home/vagrant/Code/myweb/public

    - map: myweb2.app

      to: /home/vagrant/Code/myweb2/public

 

databases:

    - homestead

    - myweb

    - myweb2

 

variables:

    - key: APP_ENV

      value: local

 

#blackfire:

#     - id: foo

#       token: bar

#       client-id: foo

#       client-token: bar

 

#ports:

#     - send: 93000

#       to: 9300

#     - send: 7777

#       to: 777

#       protocol: udp

6.启动虚拟机

进入 Homestead 目录:

cd~/Homestead

启动虚拟机:

vagrantup

虚拟机启动后,可以通过 ssh 登录虚拟机进行操作:

vagrantssh

除此之外,每次更新 Homestead.yaml 文件夹后,需要执行下面指令让新的配置生效:

vagrantprovision

最后,关闭虚拟机可以执行下面指令:

vagranthalt

四. 装载Laravel源代码

至此,我们的环境就算配置完全了,我们只需要再下载一份 Laravel 源代码就可以进行开发了。

下载源代码,我们使用 composer

Composer 是 PHP 中用来管理依赖(dependency)关系的工具。你可以在自己的项目中声明所依赖的外部工具库(libraries),Composer 会帮你安装这些依赖的库文件。
Composer 在 Homestead 中已经安装好了,我们可以直接使用。

首先我们需要启动虚拟机,并登陆虚拟机:

cd~/Homestead

vagrantup

vagrantssh

 

然后,进入Code目录,并利用 composer 来创建一个 Laravel 应用:

cdCode

composercreate-project laravel/laravel Laravel --prefer-dist "5.1.*"

 

由于国内网络原因,有时候 Composer 安装会花费很多时间,甚至出错。

这里推荐使用 Packagist / Composer 中国全量镜像 来加速 Composer 的操作。(这里我依旧用lantern解决,速度很快的!!!)

我们只需要修改 Composer 的全局配置文件即可:

composerconfig -g repo.packagist composer https://packagist.phpcomposer.com

如果没有问题的话,打开浏览器,访问http://homestead.app你能看到如下图所示界面,这是 Laravel 为我们生成默认界面。

 

最后的时候因为homestead.yaml我标记的路径写错了,结果害得找了半天,ORZ!!!

 

 

五. 常用链接整理

参考网址 :http://www.jianshu.com/p/bd027d2b8526

https://laravel-china.org/topics/2519/how-to-install-laravel-windows-on-homestead