一、为啥需要搭建环境

  为了解决环境不统一问题,所以要搭建这么个玩意儿

二、步骤

   Laravel对环境有所要求(不使用Homestead情况下),具体参考官网

   使用Homestead步骤

  1. Homestead、VirtualBox、Vagrant

    摘要:

    Laravel 致力于让整个 PHP 开发体验变得愉快, 包括你的本地开发环境。 Vagrant 提供了一种简单,优雅的方式来管理和配置虚拟机。 Laravel Homestead 是一个官方预封装的 Vagrant box,它为你提供了一个完美的开发环境,而无需在本地机器安装 PHP 、Web 服务器和其他服务器软件。不用担心会搞乱你的操作系统!Vagrant boxes 是一次性的。如果出现问题,你可以在几分钟内销毁并创建 Box! Homestead 可以运行在任何 Windows,Mac,或 Linux 系统,它包括了 Nginx web 服务器, PHP 7.2,PHP 7.1,PHP 7.0,PHP 5.6, MySQL,PostgreSQL,Redis,Memcached, Node,以及开发 Laravel 应用程序所需要的东西。——摘自后盾人向军大叔(网站升级中,后期补链接)

   1. 1 VirtualBox

    VirtualBox 是 Oracle 公司的开源虚拟机软件。VirtualBox 号称是最强的免费虚拟机软件,它不仅功能齐全,而且性能也很优异!VirtualBox 支持大部分流行的系统,如:Mac, Windows, Linux 等。

   1.2 Vagrant

    Vagrant 是用来管理虚拟机的工具,支持当前主流的虚拟机系统如 VirtualBox、VMware、AWS 等。Vagrant 的主要作用是提供一个可配置、可移植和复用的软件环境。Vagrant 让你通过编写一个 Vagrantfile 文件来控制虚拟机的启动、虚拟机网络环境的配置、虚拟机与主机间的文件共享,以及启动后自动执行一些配置脚本,如自动执行一个 Shell Script 来安装一些必备的开发工具,如安装配置MySQL、PHP,甚至是自动配置 Nginx 站点。这意味着,在一个多人开发的项目中,你只需要同步 Vagrantfile 文件,就可以保证参与项目的每个人各自的机器上拥有一致的开发环境。 可以在下面网站上搜索需要的vagrant box https://app.vagrantup.com/boxes/search

      1.3 Homestead box

    Homestead是一个官方预封装的 Vagrant box,它为你提供了一个完美的开发环境,而无需在本地机器安装 PHP 、Web 服务器和其他服务器软件。不用担心会搞乱你的操作系统!Vagrant boxes 是一次性的。如果出现问题,你可以在几分钟内销毁并创建 Box!内置软件:Ubuntu 16.04、Git、PHP 7.2、PHP 7.1、Nginx、Apache (Optional)、MySQL ……

   1.4 联系

    白话理解:

    1. vagrant把带有各种各样内置软件的Laravel/Homestead box(还有其他的Homestead box)打包成一个文件夹成为了一个镜像box来进行管理

    2. 再把这个镜像box安装到VirtualBox这个虚拟主机当中,但因为它有可能有很多(vagrant box list来查看),所以需要对其中的具体的某一个进行标识,所以这就需要进行安装Homestead管理脚本,下载好之后呢,进入Homestead文件夹中,里面的Vagrantfile配置项就是决定着你使用的那个homestead box,但是开发作者呢,将是将这个文件引用另外一个文件来进行管理的,所以我们需要进行一步操作(看下面)

   1.5  安装

    Ⅰ 在线安装 Homestead Vagrant Box,这样安装下载会非常慢(我最快网速15M/S反正是中断啊),可以使用第二种本地文件安装方式

      vagrant box add laravel/homestead

    Ⅱ 本地文件安装 先下载 离线 homestead.box ,然后执行

      vagrant box add laravel/homestead d:/code/homestead.box

      解释:

        依次执行箭头所指:

          

          如果这个盒子不想用,可以进行删除(vagrant box remove laravel/homestead) 其他的homestead box 只需要改名字就好啦~

    III 安装Homestead管理脚本

 # clone管理脚本
# 注意 切换到稳定版本,不是master哟(目前是7.18.0)
git clone https://github.com/laravel/homestead.git ~/Homestead # 进入家目录
cd Homestead/ # 因为master不稳定所以切到稳定tag
git checkout v7.18.0 # 创建 Homestead.yaml 配置文件(也就是Vagrantfile引用的文件),所以修改这个文件即可
./init.bat # 如果是本地安装的 homestead.box 则它的版本为0,所以需要修改下面步骤生成的配置文件 ~Homestead/scripts/homestead.rb 以下内容,不然的话启动homestead的时候会进行更新操作
config.vm.box_version = settings["version"] ||= ">= 0"

     Ⅳ SSH秘钥登陆(把镜像box安装到VirtualBox后,难免要登陆到操作系统当中,所以需要这一步)

第一步:修改 Homestead.yaml 文件
keys:
- ~/.ssh/id_rsa
- ~/.ssh/id_rsa.pub

    注意:进入cd .ssh/后这个文件夹中没有id_rsa(私钥) id_rsa.pub(公钥)这两个文件要进行下一步操作

    (第二步)执行 ssh-keygen -t rsa -C "XXX@qq.com"(替换自己的邮箱),然后一路回车即可(中间有步骤让设置密码,因为是本地开发没必要设置,所以一路回车)

      V  文件夹同步配置(我们不可能每次需要进入虚拟机来进行代码的书写,所以需要将本机和虚拟机进行连接来进行代码书写)

 # map: 本机文件夹路径
# to: 推送到的虚拟主机路径
# 这个过程是双向的
# ~代表家目录(我的电脑是c:/Users/Dumpling)
folders:
- map: ~/code
to: /home/vagrant/code

      VI vagrant命令(此时需要进入Homestead/文件夹)并测试文件同步

    启动虚拟机 —— vagrant up(因为在Homestead.yaml文件中的provider: virtualbox所以会安装虚拟机会安装到这个里面)

 #启动 如果加上 --provision 选项那么添加的新站点会发布到虚拟机上。
cd ~/Homestead && vagrant up #关闭
vagrant halt #通过 SSH 登录 vagrant(需要先启动 vagrant)
vagrant ssh #查看目前安装的box列表
vagrant box list #删除box镜像
vagrant box remove laravel/homestead #查看当前 Homestead 虚拟机的状态。
vagrant status

    进入虚拟机 —— vagrant ssh(界面如下)

      

      测试文件同步

        此时虚拟机的code目录是空的,那么进入到家目录的code中创建一个文件看虚拟机中是否同时生成一个文件

          

          本机创建后,查看虚拟机情况如下

          

          同步成功

    VII 使用域名访问到homestead虚拟主机

    控制域名的地方在 Homestead.yaml文件中

 # map:域名
# to:域名指向的目录是虚拟机中的这个位置
sites:
- map: homestead.test
to: /home/vagrant/code/public

      记得修改本机hosts文件哟(请按照自己的本本自行百度)

  Ⅷ homestead链接数据库

    就只有端口不一样而已~

      要从主机的数据库客户端连接到 MySQL,就连接到 127.0.0.1和端口 33060 (MySQL) 。账号密码分别是 homestead/secret。

      PHP代码连接(虚拟机中连接)端口为 3306

        

  Ⅸ 全局命令

    Mac/Linux:

      如果iTems没有使用风格包zshrc的话,就在家目录下创建bash_profile文件,如有有的话修改修改zshrc文件

# 其实就是创建一个函数把进入Homestead/文件夹的操作,以及vagrant命令进行了结合
# 函数名可以修改为自己的,我这里是为了方便记忆和区分
function homestead(){
( cd ~/Homestead && vagrant $* )
}

    Windows:同上(我反正按照中文手册的操作是不行的~)

    至此呢,有关于homestead的配置就完成啦~ 如果有任何不足,请予以指出。

    最后呢 感谢一下后盾网~ 贼拉好的PHP学习,大家可以去看看哟

    谢谢观赏~

Laravel系列之环境搭建 — VirtualBox+Vagrant+Homestead的更多相关文章

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

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

  2. 1、 小白带你入坑xamarin系列之环境搭建和准备

    重点提示 由于xamarin发展更新很快 目前教程部分内容已经过时 请注意下载最新版本   2018.05.23 www.xamarin.com 1. 小白带你入坑xamarin系列之环境搭建和准备 ...

  3. Atiti. Php Laravel 5.1 环境搭建以及  error 排除

    Atiti. Php Laravel 5.1 环境搭建以及  error 排除 1. php_5.6.11_apache2.41 1.1. Httpd.Conf增加以下配置,添加php支持1 1.2. ...

  4. 「译」JUnit 5 系列:环境搭建

    原文地址:http://blog.codefx.org/libraries/junit-5-setup/ 原文日期:15, Feb, 2016 译文首发:Linesh 的博客:环境搭建 我的 Gith ...

  5. PHP Laravel 5.4 环境搭建

    1.php运行环境搭建 在win10系统上进行搭建的,使用的是wamp环境  wampserver3_x86_apache2.4.17_mysql5.7.9_php5.6.15.exe,安装包中集成了 ...

  6. Selenium+Python系列 - 开发环境搭建

    一.写在前面 我从未想过自己会写python系列的自动化文章,有些同学会问,那你现在为什么又开始写了? 不止一个人找过我,问我可以写一些Python自动化的文章吗,答案是肯定的. 笔者Java党,整P ...

  7. 使用 robotframework 自动化测试系列 二 -----环境搭建

    环境搭建是测试人员基础,本质都是不难的,按照流程和步骤一步步做,遇到问题不要担心,解决的问题越多,你理解的也就越多. 1. 安装python环境,python现在有python2 和python3.由 ...

  8. Dubbo 源码分析系列之一环境搭建

    环境搭建的步骤有哪些 依赖外部的环境 使用的开发工具 源码的拉取 结构大致介绍 1 依赖的外部环境 安装JDK 安装Git 安装maven 这边我们就不介绍怎么安装这些外部环境了,大家自行从安装这些外 ...

  9. quick-cocos2d-x 系列之——环境搭建(Mac版)

    quick-cocos2d-x简单介绍 何为quick-cocos2d-x? ?   简单一句话:quick-cocos2d-x是採用lua语言,通过tolua++工具对cocos2d-x进一步封装, ...

随机推荐

  1. dapper.net框架使用随笔

    一.简单介绍 Dapper是轻量级的ORM工具,代码就SqlMapper.cs一个文件,对于习惯使用原生的sql语句用户是个好选择,具有以下特性. 1.类似 ado.net 的写法,灵活拼接sql 2 ...

  2. linux创建用户与删除用户及问题解决(ubuntu)

    创建的用户不正确,一直在删除创建,发现了挺多问题也学到了一些东西如下是我的总结. (root用户设置: 由于ubtun系统默认是没有激活root用户的,需要我们手工进行操作,在命令行界面下,或者在终端 ...

  3. Java Knowledge series 1

    Programming language evolves always along with Compiler's evolvement JVM as Additional Indirection I ...

  4. 用Python爬虫对豆瓣《敦刻尔克》影评进行词云展示

    最近很想看的一个电影,去知乎上看一下评论,刚好在学Python爬虫,就做个小实例. 代码基于第三方修改 原文链接  http://python.jobbole.com/88325/#comment-9 ...

  5. Linux vi 常用指令总结

    本文根据笔者,日常常用的linux下的vi指令,进行说明 一.基本操作 1.vi 文件名 进入vi 的“命令行模式”,此模式无法编辑,只能查看 需要按下键盘的“i”键,进入“编辑模式”,才能进行文件的 ...

  6. JavaScript基础:字符串转换函数——String()和toString()

    1..toString()可以将所有的的数据都转换为字符串,但是要排除null 和 undefined 例如将false转为字符串类型 <script>   var str = false ...

  7. ES6相关特性(解构赋值)

    解构赋值:本质上是一种匹配模式,等号两边的模式相同,则左边的变量可以被赋予对应的值. 注意:null & undefined 不能解构赋值!!! 数组的解构赋值: let [a,[[b],c] ...

  8. 如何利用BAPI SD_SALESDOCUMENT_CHANGE修改Sales Order的字段

    假设我想修改S/4HANA里Sales Order抬头的Service Date字段SERV_DATE: 首先从数据库表VBKD里查找到SERV_DATE修改之前的值为2020年1月1日 使用如下代码 ...

  9. php之判断点在多边形内的api

    1.判断点在多边形内的数学思想:以那个点为顶点,作任意单向射线,如果它与多边形交点个数为奇数个,那么那个点在多边形内,相关公式: <?php class AreaApi{ //$area是一个多 ...

  10. CRUD全栈式编程架构之更精简的设计

    精简的程度 ViewModel精简 服务精简 控制器精简 Index.cshmtl精简 AddOrEdit.cshtml精简 效果:最精简的情况下,只需要写Entity这一个数据库实体然后加上一些简单 ...