PHP Laravel系列之环境搭建( VirtualBox+Vagrant+Homestead+系列网址)

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

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

 

一. 环境

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就好了!!

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

手动添加方式:

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

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

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

  1. {
  2. “name”:“laravel/homestead”,
  3. “versions”:
  4. [
  5. {
  6. “version”: “0.5.0”, //这里一定要修改版本号!!!在上面的那个路径里面有,我的是3.0.0 不改后面一定会报错的!!!如下图
  7. “providers”: [
  8. {
  9. “name”:“virtualbox”,
  10. “url”:“D:/box/virtualbox.box” //你下载的virtualbox.box在电脑系统上的位置
  11. }
  12. ]
  13. }
  14. ]
  15. }

 

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

C:\Users\windows的账户名>

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

  1. C:\Users\windows的账户名>vagrant box add a.json
  2. 会出现:
  3. ==>box: Loading metadata for box ‘a.json’
  4. box: URL:file://C:/Users/windows的账户名/a.json
  5. ==>box: Adding box ‘laravel/homestead’ (v3.0.0) for provider: virtualbox
  6. box:Downloading: “D:/box/virtualbox.box” //你下载的virtualbox.box在电脑上的位置
  7. box:Progress: 100% (Rate: 129M/s, Estimated time remaining: –:–:–)
  8. ==>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 系统使用以下命令快速安装:
  1. sudoyum install git
  2. 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 “[email protected]

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

 

转载:https://blog.csdn.net/u014665013/article/details/77775911