PHP Laravel系列之环境搭建( VirtualBox+Vagrant+Homestead+系列网址)
Posted on 2017-09-02 08:31 蓝空 阅读(250) 评论(0) 编辑 收藏 举报搭建环境从来都是阻挡一门新技能的最致命的硬伤,为了这个环境,我又是花费了半天的时间,各种问题层出不穷,下面基于网上的一些教程(我看到的都多少有些问题)
开始的时候是在实验楼这个平台上开始学习的,不过 这个平台对于入门还真的是很好的,不过后期因为结合项目还有一些权限问题就不够了,入门推荐实验楼(怎么和打广告一样啊)
一. 环境
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!!!
五. 常用链接整理
- Laravel 官网
- Laravel China 中文社区
- Laravel 学院
- golaravel 中文社区
- Laravel 5.1 中文文档
- 系列网址收藏:https://lvwenhan.com/sort/laravel
参考网址 :http://www.jianshu.com/p/bd027d2b8526
https://laravel-china.org/topics/2519/how-to-install-laravel-windows-on-homestead