zoukankan      html  css  js  c++  java
  • 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:Userswindows的账户名>

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

    1. C:Userswindows的账户名>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:WindowsSystem32driversetchosts,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

  • 相关阅读:
    安猪瀚的一家之言:多读书,多看报,少吃零食,多睡觉
    关于概率分布理论的原理分析的一些讨论,以及经典概率分布的应用场景,以及概率统计其在工程实践中的应用
    从NLP任务中文本向量的降维问题,引出LSH(Locality Sensitive Hash 局部敏感哈希)算法及其思想的讨论
    代价敏感学习初探
    从矩阵(matrix)角度讨论PCA(Principal Component Analysis 主成分分析)、SVD(Singular Value Decomposition 奇异值分解)相关原理
    简要介绍Active Learning(主动学习)思想框架,以及从IF(isolation forest)衍生出来的算法:FBIF(Feedback-Guided Anomaly Discovery)
    线性方程组数学原理、矩阵原理及矩阵变换本质、机器学习模型参数求解相关原理讨论
    SpringMVC(十五):Dispatcher的重要组件之一MultipartResolver(StandardServletMultipartResolver和CommonsMultipartResolver)的用法
    SpringBoot(十八):SpringBoot2.1.1引入SwaggerUI工具
    SpringBoot(十七):SpringBoot2.1.1数据类型转化器Converter
  • 原文地址:https://www.cnblogs.com/lxwphp/p/9646042.html
Copyright © 2011-2022 走看看