工欲善其事必先利其器,开发环境 和 开发工具 就是 我们开发人员的剑,所以我们需要一个快并且好用的剑

关于本篇博文有视频讲解的:vagrant打造跨平台可移动的开发环境

刚开始做开发的时候的都是把开发环境 配置在 自己的电脑上,随着后面我们接触的东西越来越多,慢慢的电脑上都是各种环境了,php,java,python,nodejs等等,非常麻烦,并且经常由于某种原因就把电脑重装了,ORZ,所以环境都要重来。所以打造一个属于自己并且可以移动的环境是非常重要的。

vagrant就是一款构建虚拟开发环境的工具,支持window,linux,mac,总有一款适合你。并且vagrant 可以把配置好的环境打包成一个box,分享给其他人直接使用,非常方便

系统要求:(本人mac系统)

机器支持虚拟化,有时候需要调整bios开启cpu虚拟化。

第一步:安装virtualbox (本人virtualbox版本 4.3.30)

具体安装包请直接从官网下载:https://www.virtualbox.org/wiki/Downloads

第二步:  安装 vagrant (本人vagrant 版本 Vagrant 1.6.3)

$ vagrant -v
Vagrant 1.6.3
具体安装包请直接从官网下载:

第三步:vagrant 基本命令

官网文档:https://www.vagrantup.com/docs/getting-started/index.html

vagrant init        初始化vagrantfile
vagrant add box     添加box,自动帮你生成vagrantfile
vagrant halt        关闭虚拟机
vagrant destroy     销毁虚拟机
vagrant ssh         连接虚拟机
vagrant reload      重新加载vagarntfile文件
vagrant suspend     暂时挂起虚拟机
vagrant status      查看虚拟机运行状态

第四步:示例演示

4.1 下载box

下面是ubuntu的两个官方地址:
Ubuntu precise 32 VirtualBox http://files.vagrantup.com/precise32.boxUbuntu precise 64 VirtualBox http://files.vagrantup.com/precise64.box如果你要其他系统的镜像,可以来这里下载:http://www.vagrantbox.es/

$ mkdir -p  ~/vagrant/boxes
$ cd ~/vagrant/boxes && wget  
$ vagrant box add ubuntu64 precise64.box //添加box

4.2 新建一个lnmp(linux + nginx + mysql + php-fpm)虚拟机

$ cd ~/vagrant && mkdir lnmp
$ cd lnmp
$ vagrant init ubuntu64 //初始化
$ vagrant up //启动虚拟机lnmp
$ vagrant ssh //进入虚拟机lnmp

这个虚拟机就新建好了,是不是很快!!熟悉linux的就可以修改源,安装软件了

$ sudo apt-get install  keychain nginx mysql-server mysql-client  php5-cli php5-fpm php5-gd php5-mysql

具体过程还可以参考我的博文:ubuntu12.04 安装 php5.4/php5.5

第五步:个性化配置Vagrantfile

在进行 vagrant init 之后我们会发现对应的目录下有个Vagrantfile文件

直接上截图,就不一个一个解释了

第六步:导出自己的box

$ cd ~/VirtualBox\ VMs/phponubuntu64
$ vagrant package  --output lamp5_5onubuntu64.box --base phponubuntu64

注意事项

问题一)使用 Apache/Nginx 时会出现诸如图片修改后但页面刷新仍然是旧文件的情况,是由于静态文件缓存造成的。需要对虚拟机里的 Apache/Nginx 配置文件进行修改:

#nginx配置
sendfile off
#apache 配置
EnableSendFile off

问题二:启动多个虚拟机提示错误“2222 端口 in use”

解决办法:(参考文章:Vagrant SSH errors with multiple VMs: Port 2222 in use)

config.vm.network "forwarded_port", guest: 22, host: 2220 ,id: 'ssh'

问题三:如果遇到 php 代码也感觉被缓存起来了,请关闭apc,opcode(从php5.5及以后版本默认开启opcode)

问题四:config.vm.boot_timeout

Timed out while waiting for the machine to boot. This means that
Vagrant was unable to communicate with the guest machine within
the configured ("config.vm.boot_timeout" value) time period. If you look above, you should be able to see the error(s) that
Vagrant had when attempting to connect to the machine. These errors
are usually good hints as to what may be wrong. If you're using a custom box, make sure that networking is properly
working and you're able to connect to the machine. It is a common
problem that networking isn't setup properly in these boxes.
Verify that authentication configurations are also setup properly,
as well. If the box appears to be booting properly, you may want to increase
the timeout ("config.vm.boot_timeout") value.

类似如上的错误日志,本人解决方案是,设置=>网络=>高级=>选中 cable connected

问题五:GUI模式waiting for network configuration

waiting for network configuration
waiting an additional 60 seconds for network configuration

这个是网络配置有问题,直接进去虚拟机 编辑 /etc/network/interfaces 删除不需要的,

问题六:Warning: Authentication failure. Retrying...

那么把 https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub   公钥放到authorized_keys 文件中,重新vagrant reload

ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA6NF8iallvQVp22WDkTkyrtvp9eWW6A8YVr+kz4TjGYe7gHzIw+niNltGEFHzD8+v1I2YJ6oXevct1YeS0o9HZyN1Q9qgCgzUFtdOKLv6IedplqoPkcmF0aYet2PkEDo3MlTBckFXPITAMzF8dJSIFo9D8HfdOV0IAdx4O7PtixWKn5y2hMNG0zQPyUecp4pzC6kivAIhyfHilFR61RGL+GPXQ2MWZWFYbAGjyiYJnAmCP3NOTd0jMZEnDkbUvxhMmBYSdETk1rRgm+R4LOzFUGaHqHDLKLX+FIPKcF96hrucXzcWyLbIbEgE98OHlnVYCzRdK8jlqm8tehUc9c9WhQ== vagrant insecure public key

我个人操作步骤是

  1. 删除authorized_keys

  2. vagrant reload

  3. 在上述链接的内容 放到 虚拟机 authorized_keys 中

  4. vagrant reload

问题七:mount: unknown filesystem type 'vboxsf' centos ubuntu 处理方案

Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was: mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant The error output from the command was: mount: unknown filesystem type 'vboxsf'

可能大家在使用vagrant的时候经常遇到以上提示,这个时候只是共享目录无法使用,虚拟机已经在运行了

下面是我处理的方法,贴出来与大家分享;

ubuntu系统处理方案

sudo apt-get update
sudo apt-get install virtualbox-guest-utils

以上两条代码,ubuntu系统我就处理好了。重启虚拟机

原文地址:快速打造跨平台开发环境 vagrant + virtualbox + box
标签:virtualbox   打造   快速   虚拟机   安装   box   sendfile   off   2222   制作box   vagrant   timeout   waiting   network   跨平台

智能推荐

快速打造跨平台开发环境 vagrant + virtualbox + box的更多相关文章

  1. [转帖]使用 Vagrant 打造跨平台开发环境

    使用 Vagrant 打造跨平台开发环境 https://segmentfault.com/a/1190000000264347 Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/p ...

  2. 使用 Vagrant 打造跨平台开发环境

    Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史. 我们可以通过 Va ...

  3. 使用 Vagrant 打造跨平台开发环境fffff

    Vagrant 是一款用来构建虚拟开发环境的工具,非常适合 php/python/ruby/java 这类语言开发 web 应用,“代码在我机子上运行没有问题”这种说辞将成为历史. 我们可以通过 Va ...

  4. CentOS 7快速搭建Nodejs开发环境

    Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好.学习Nodejs首先需要会安装环境.这里我介绍如 ...

  5. Linux下快速搭建php开发环境

    php开发环境快速搭建 一.Linux下快速搭建php开发环境 1.安装XAMPP for Linux XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建站集成软件包,使用XA ...

  6. [.net 面向对象程序设计深入](9).NET Core 跨平台开发环境搭建

    [.net 面向对象程序设计深入](9).NET Core 跨平台开发环境搭建 1.概述 读前必备:认识.NET Core 上篇介绍了.NET 新的生态环境:包括.NET Framework..NET ...

  7. Windows7 x64 跨平台开发环境安装配置

    ======================================================================= Windows7 x64 跨平台开发环境安装配置 201 ...

  8. 使用create-react-app 快速构建 React 开发环境以及react-router 4.x路由配置

    create-react-app 是来自于 Facebook,通过该命令我们无需配置就能快速构建 React 开发环境. create-react-app 自动创建的项目是基于 Webpack + E ...

  9. 【React】使用 create-react-app 快速构建 React 开发环境

    create-react-app 是来自于 Facebook,通过该命令我们无需配置就能快速构建 React 开发环境. create-react-app 自动创建的项目是基于 Webpack + E ...

随机推荐

  1. jQuery的61种选择器

    The Write Less , Do More ! jQuery选择器 1. #id : 根据给定的ID匹配一个元素 <p id="myId">这是第一个p标签< ...

  2. ASP.NET是如何在IIS下工作的

    ASP.NET与IIS是紧密联系的,由于IIS6.0与IIS7.0的工作方式的不同,导致ASP.NET的工作原理也发生了相应的变化. IIS6(IIS7的经典模式)与IIS7的集成模式的不同 IIS6 ...

  3. 基于ASP.NET/C#开发国外支付平台(Paypal)学习心得。

        最近一直在研究Paypal的支付平台,因为本人之前没有接触过接口这一块,新来一家公司比较不清楚流程就要求开发两个支付平台一个是支付宝(这边就不再这篇文章里面赘述了),但还是花了2-3天的时间通 ...

  4. H5坦克大战之【画出坦克】

    今天是个特殊的日子,圣诞节,也是周末,在这里先祝大家圣诞快乐!喜庆的日子,我们可以稍微放松一下,扯一扯昨天雷霆对战凯尔特人的比赛,这场比赛大威少又双叒叕拿下三双,而且是一个45+11+11的超级三双, ...

  5. Velocity初探小结--velocity使用语法详解

    做java开发的朋友一般对JSP是比较熟悉的,大部分人第一次学习开发View层都是使用JSP来进行页面渲染的,我们都知道JSP是可以嵌入java代码的,在远古时代,java程序员甚至在一个jsp页面上 ...

  6. 基于fis3的组件可视化道路

    首先说明一下,即使不熟悉fis3,阅读文本应该也会有所收获. 本文以fis-parser-imweb-tplv2插件为模板插件,目的不在于使用哪个模板,而是组件可视化的实现思路,不必担心. 先说说模板 ...

  7. 【微信小程序开发】之如何获取免费ssl证书【图文步骤】

    微信小程序要求所有网络请求都走ssl加密,因此我们开发服务端接口需要配置为https 这篇文章介绍一下如何 在 startssl 申请一个免费的ca证书. 1. 打开网站  https://www.s ...

  8. 【Linux大系】Linux的概念与体系

    感谢原作者:Vamei 出处:http://www.cnblogs.com/vamei 我在这一系列文章中阐述Linux的基 本概念.Linux操作系统继承自UNIX.一个操作系统是一套控制和使用计算 ...

  9. ResponsibleChain(责任链模式)

    /** * 责任链模式 * @author TMAC-J * 老板讲任务交给CTO,CTO自然不会亲自去做,又把人物分配给项目经理,项目经理再把任务分配给组长,组长再分配给个人 * 如果中途哪个环节出 ...

  10. “此网页上的某个 Web 部件或 Web 表单控件无法显示或导入。找不到该类型,或该类型未注册为安全类型。”

    自从vs装了Resharper,看见提示总是手贱的想去改掉它.于是乎手一抖,把一个 可视web部件的命名空间给改了. 喏,从LibrarySharePoint.WebPart.LibraryAddEd ...