热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Vagrant安装教程及常见问题

http:ju.outofmemory.cnentry346215前言:Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。它的主要意

http://ju.outofmemory.cn/entry/346215

前言:
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。
它的主要意义是让所有开发人员都使用和线上服务器一样的环境,本质上和你新建一个虚拟机。
那最 常见 的,正常我们是怎么开发呢,大部分童鞋应该是在windows下搭建开发环境,敲代码,运行程序,达到效果git或svn提交,发布linux环境再看效果。
而 vagrant virtualBox实现了把代码同步共享到linux虚拟机,而这个虚拟机你可以配成和你生产环境一样的,
说白了,通过共享文件到虚拟机,在类生产环境下运行。【 让你在windows下体验到在linux开发的效果。
还有一种共享方式,可以借助IDE的develop功能通过sftp上传到服务器,然后访问服务器
三种方式总结:
【1】原始windows开发模式:windows开发-本地访问调试(与生产环境毕竟不同)-发布到linux运行
【2】 vagrant virtualBox模式: windows开发 - 文件本地共享 -- 直接访问虚拟机(linux环境与生产一致)
【3】IDE develop 模式: windows开发 - 文件远程上传 -- 访问远程开发机(linux环境与生产一致)
其实【1】,与【2,3】的区别就在于,程序是在哪里运行的,windows本地?or Linux仿生产环境
(能在仿生产的环境直接开发肯定比在windows开发在放到linux更好些,开发方便避免一些环境上等的麻烦)
【2】与【3】的区别就在于文件是如何同步的:【2】是通过虚拟机文件共享实现同步;【3】直接利用sftp远程上传实现同步。
缺点:
【1】毫无疑问,它的弊端就是开发时不能模拟生产环境,可能会有衔接 问题 ,环境有了 问题 不像虚拟机重安一台立刻搞定。
【3】存在的 问题 ,比如:当切换开发分支后改动了文件a和b,当前ide选中的是a文件,ok他会自动上传更新,但是b文件不会,因为窗口你没在b文件下呀,没有那么智能不会自动触发上传更新,这点就坑了造成代码不同步,需要你自己手动触发一下相关文件的上传,尤其是依赖一些包的时候会发生丢失,得全项目上传一次;
【2】因为是本地和虚拟机的文件共享嘛,没有文件上传遗漏一说,所以还是很推荐用
目录:
一。 安装 虚拟机
二。Vagrantfile配置文件详解
三。连接虚拟机
四。碰到 问题

一。 安装 虚拟机
1.添加box
vagrant box add base your_box_addres
注意:base是默认名称,主要用来标识一下你添加的box,后面的命令都是基于这个标识来操作的,你也可以用其他名称【但是用了其他名字记得在第二步用此名字init】
2.初始化
vagrant init
vagrant init box_name
如果你添加的box名称不是[base],那么需要在初始化的时候指定名称
3.启动虚拟机
vagrant up
启动过程可能比较长,耐心等待
图一.运行过程总图
图二
相关指令:

vagrant up (启动虚拟机)
vagrant halt (关闭虚拟机——对应就是关机) vagrant suspend (暂停虚拟机——只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用) vagrant resume (恢复虚拟机—— 与前面的暂停相对应) vagrant destroy (删除虚拟机,删除后在当前虚拟机所做进行的除开Vagrantfile中的配置都不会保留)

二.Vagrantfile配置文件详解
在我们的开发目录下有一个文件Vagrantfile,里面包含有大量的配置信息,主要包括三个方面的配置,虚拟机的配置、SSH配置、Vagrant的一些基础配置。(它的配置语法也是Ruby的)【修改配置文件,记得完后重启vagrant才能生效哦】

在我们的开发目录下有一个文件 Vagrantfile ,里面包含有大量的配置信息,主要包括三个方面的配置,虚拟机的配置、SSH配置、Vagrant的一些基础配置。Vagrant是使用Ruby开发的,所以它的配置语法也是Ruby的,但是我们没有学过Ruby的人还是可以跟着它的注释知道怎么配置一些基本项的配置。

具体介绍,参考:http://blog.csdn.net/chajinglong/article/details/52805915

# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure # configures the configuration version (we support older styles for # backwards compatibility). Please don\&#39;t change it unless you know what # you\&#39;re doing. Vagrant.configure(2) do |config|   # The most common configuration options are documented and commented below.   # For a complete reference, please see the online documentation at   # https://docs.vagrantup.com.   # Every Vagrant development environment requires a box. You can search for   # boxes at https://atlas.hashicorp.com/search.   config.vm.box &#61; "base"   # Disable automatic box update checking. If you disable this, then   # boxes will only be checked for updates when the user runs   # &#96;vagrant box outdated&#96;. This is not recommended.   # config.vm.box_check_update &#61; false   # Create a forwarded port mapping which allows access to a specific port   # within the machine from a port on the host machine. In the example below,   # accessing "localhost:8080" will access port 80 on the guest machine.   # config.vm.network "forwarded_port", guest: 80, host: 80   # Create a private network, which allows host-only access to the machine   # using a specific IP.   config.vm.network "private_network", ip: "192.168.33.10"   # Create a public network, which generally matched to bridged network.   # Bridged networks make the machine appear as another physical device on   # your network.   # config.vm.network "public_network"   # Share an additional folder to the guest VM. The first argument is   # the path on the host to the actual folder. The second argument is   # the path on the guest to mount the folder. And the optional third   # argument is a set of non-required options.   config.vm.synced_folder "D:/all_code/", "/home/www"   # Provider-specific configuration so you can fine-tune various   # backing providers for Vagrant. These expose provider-specific options.   # Example for VirtualBox:   #   # config.vm.provider "virtualbox" do |vb|   #   # Display the VirtualBox GUI when booting the machine   #   vb.gui &#61; true   #   #   # Customize the amount of memory on the VM:   #   vb.memory &#61; "1024"   # end   #   # View the documentation for the provider you are using for more   # information on available options.   # Define a Vagrant Push strategy for pushing to Atlas. Other push strategies   # such as FTP and Heroku are also available. See the documentation at   # https://docs.vagrantup.com/v2/push/atlas.html for more information.   # config.push.define "atlas" do |push|   #   push.app &#61; "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"   # end   # Enable provisioning with a shell script. Additional provisioners such as   # Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the   # documentation for more information about their specific syntax and use.   # config.vm.provision "shell", inline: <   #   sudo apt-get update   #   sudo apt-get install -y apache2   # SHELL end

三.连接虚拟机
1.虚拟机相关登录信息
vagrant ssh
这样我们就可以像连接到一台服务器一样进行操作了。
图三
2.ssh登录
window机器不支持这样的命令&#xff0c;必须使用第三方客户端来进行连接&#xff0c;例如xmoba、putty、Xshell等.

ssh: 127.0.0.1 端口: 2222 用户名: vagrant 密码: vagrant

图四.xshell登陆举例
图五.xmoba登陆举例
3.系统信息
df -h
/vagrant这个目录是自动映射的&#xff0c;被映射到你刚刚建立的文件夹&#xff0c;这样就方便我们以后在开发机中进行开发&#xff0c;在虚拟机中进行运行效果测试了。
四。碰到 问题 &#xff1a;
1.vagrant up 时提示错误 cound not open file 问题
如果init指定了 add的名称test&#xff0c;那么init时也要说明&#xff0c;少了这一步
如下边错误演示与正确演示。
图六.错误演示
图七.正确演示
2.vagrant up 时提示错误&#xff1a;

The guest machine entered an invalid state while waiting for it to boot. Valid states are \&#39;starting, running\&#39;. The machine is in the \&#39;poweroff\&#39; state. Please verify everything is configured properly and try again. If the provider you\&#39;re using has a GUI that comes with it, it is often helpful to open that and watch the machine, since the GUI often has more helpful error messages than Vagrant can retrieve. For example, if you\&#39;re using VirtualBox, run &#96;vagrant up&#96; while the VirtualBox GUI is open. The primary issue for this error is that the provider you\&#39;re using is not properly configured. This is very rarely a Vagrant issue.

打开虚拟机启动&#xff0c;也会提示报错&#xff1a;

Unable to load R3 module D:\virtualBox/VBoxDD.DLL (VBoxDD): GetLastError&#61;1790 (VERR_UNRESOLVED_ERROR).

原因&#xff1a;
本目录中的以下三个文件是原始的未被破解的WIN7 64位系统主题文件&#xff1a;
themeservice.dll &#xff0c; themeui.dll &#xff0c;uxtheme.dll
为了使用工具UniversalThemePatcher-x64.exe恢复主题&#xff0c;特地将以上3个文件&#xff0c;
各拷贝了一份&#xff0c;并重新命名如下&#xff1a;
themeservice.dll.backup &#xff0c;themeui.dll.backup &#xff0c;uxtheme.dll.backup
解决方法&#xff1a;
我们只须把重命名后的3个文件&#xff1a;
themeservice.dll.backup &#xff0c;themeui.dll.backup &#xff0c;uxtheme.dll.backup
拷贝到C:\Windows\System32目录下面&#xff0c;
然后运行工具UniversalThemePatcher-x64.exe进行恢复即可。
下载地址&#xff1a;http://download.csdn.net/download/ty_hf/10013443


推荐阅读
  • `chkconfig` 命令主要用于管理和查询系统服务在不同运行级别中的启动状态。该命令不仅能够更新服务的启动配置,还能检查特定服务的当前状态。通过 `chkconfig`,管理员可以轻松地控制服务在系统启动时的行为,确保关键服务正常运行,同时禁用不必要的服务以提高系统性能和安全性。本文将详细介绍 `chkconfig` 的各项参数及其使用方法,帮助读者更好地理解和应用这一强大的系统管理工具。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • 本文深入探讨了使用Puppet进行软件包分发与管理的方法。首先介绍了fpm这一跨平台的软件包制作工具,其简便的操作流程使得软件包的创建变得轻松快捷。fpm的项目地址为:https://github.com/jordansissel/fpm。通过结合Puppet和fpm,可以实现高效、可靠的软件包管理和部署。 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • Windows环境下详细教程:如何搭建Git服务
    Windows环境下详细教程:如何搭建Git服务 ... [详细]
  • Clutter是一个支持2D界面的3D动画的UI库。Moblin使用Clutter创建美观、有效和直观的用户界面,您的程序也能做到。Clutter及其相关项目是Mob ... [详细]
  • 本文详细介绍了在 Red Hat Linux 系统上安装 GCC 4.4.2 的步骤,包括必要的依赖库的安装及常见问题的解决方法。 ... [详细]
  • Vim 编辑器功能强大,但其默认的配色方案往往不尽如人意,尤其是注释颜色为蓝色时,对眼睛极为不友好。为了提升编程体验,自定义配色方案显得尤为重要。通过合理调整颜色,不仅可以减轻视觉疲劳,还能显著提高编码效率和兴趣。 ... [详细]
  • AppFog 是一个基于 CloudFoundry 的多语言 PaaS(平台即服务)提供商,允许用户在其平台上轻松构建和部署 Web 应用程序。本文将通过详细的图文步骤,指导读者如何在 AppFog 免费云平台上成功部署 WordPress,帮助用户快速搭建个人博客或网站。 ... [详细]
  • 利用 Python Paramiko 库在远程服务器上高效执行 Shell 脚本的方法与技巧 ... [详细]
  • svnstat查看当前目录下svn状态svnremovexxxxsvnaddxx ... [详细]
  • 配置svn_Zend Studio 配置SVN并导入SVN项目
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了ZendStudio配置SVN并导入SVN项目相关的知识,希望对你有一定的参考价值。 ... [详细]
  • CentOs6.5基本环境配置(八):svn服务配置
    2019独角兽企业重金招聘Python工程师标准小编采用vm虚拟机进行安装svn版本控制工具,实际linux系统中安装性质一样,只需在客户端连接时 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
author-avatar
勇敢的刺鸟宝贝4164053383
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有