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

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.  
  5. box: URL:file:
    //C:/Users/windows的账户名/a.json

  6.  
  7. ==>box: Adding box
    ‘laravel/homestead’ (v3.0.0) for provider: virtualbox

  8.  
  9. box:Downloading:
    “D:/box/virtualbox.box” //你下载的virtualbox.box在电脑上的位置

  10.  
  11. box:Progress:
    100% (Rate: 129M/s, Estimated time remaining: –:–:–)

  12. ==>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 “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

 

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/112898.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 使用vue.js安装node环境npm出错npm ERR! network request to https://registry.npmjs.org/nrm failed, reason: conn[通俗易懂]

    使用vue.js安装node环境npm出错npm ERR! network request to https://registry.npmjs.org/nrm failed, reason: conn[通俗易懂]报错信息:npmERR!codeETIMEDOUTnpmERR!errnoETIMEDOUTnpmERR!networkrequesttohttps://registry.npmjs.org/nrmfailed,reason:connectETIMEDOUT104.16.20.35:443npmERR!networkThisisaproblem…

    2022年10月29日
  • Pytorch_hook机制的理解及利用register_forward_hook(hook)中间层输出[通俗易懂]

    Pytorch_hook机制的理解及利用register_forward_hook(hook)中间层输出[通俗易懂]参考文献:【1】梯度计算问题含公式:参考链接1.【2】pytorch改动和.data和.detch()问题:https://blog.csdn.net/dss_dssssd/article/details/83818181【3】hook技术介绍:https://www.cnblogs.com/hellcat/p/8512090.html【4】hook应用->中间层的输出:https://blog.csdn.net/qq_40303258/article/details/10688431

    2022年10月26日
  • Java POI 导出Excel经典实现 导出Excel弹出下载框 Spring Boot【不定期更新】

    Java POI 导出Excel经典实现 导出Excel弹出下载框 Spring Boot【不定期更新】在web开发中,有一个经典的功能,就是数据的导入导出。特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作。而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下。(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^)呵呵,首先我们来导出EXCEL格式的文件吧。现在主流的操作Ex…

  • c++ sstream

    c++ sstreamsstream定义了三个类:istringstream、ostringstream和stringstream分别用来进行流的输入、输出和输入输出操作由于sstream使用string对象代替字符数组,避免缓冲区溢出的危险;其次,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符的问题。相比c库的数据类型转换,sstream更加安全、自动和直接。1.数据类型转换#inclu…

  • string或binary数据将被截断_字符串截断错误

    string或binary数据将被截断_字符串截断错误Hibernate:insertintodis_txtfile(delivery,postationid,sn,id)values(?,?,?,?)2012-02-2111:28:53,481[main]WARN org.hibernate.util.JDBCExceptionReporter-SQLError:0,SQLState:220012

  • pytest fixtures_jig和fixture的区别

    pytest fixtures_jig和fixture的区别fixture的优势Pytest的fixture相对于传统的xUnit的setup/teardown函数做了显著的改进:命名方式灵活,不局限于setup和teardown这几个命名conf

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号