vagrant 使用方法

  

0.介绍

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

我们可以通过 Vagrant 封装一个 Linux 的开发环境,分发给团队成员。成员可以在自己喜欢的桌面系统(Mac/Windows/Linux)上开发程序,代码却能统一在封装好的环境里运行,非常霸气。

  1.安装过程

  1. 安装 VirtualBox

  虚拟机  VirtualBox 免费小巧
  下载地址:https://www.virtualbox.org/wiki/Downloads
  * Vagrant 也支持 VMware,VMware 收费,对应的 Vagrant 版本也收费

  2. 安装 Vagrant

  下载地址:http://downloads.vagrantup.com/ 根据提示一步步安装。

  此外,还得下载官方封装好的基础镜像:

  Ubuntu precise 32 VirtualBox http://files.vagrantup.com/precise32.box

  Ubuntu precise 64 VirtualBox http://files.vagrantup.com/precise64.box

  如果你要其他系统的镜像,可以来这里下载:http://www.vagrantbox.es/

  * 鉴于国内网速,我们将下载镜像的步骤单独剥离出来了

  3. 添加镜像到 Vagrant

  假设我们下载的镜像存放路径是 ~/box/precise64.box,在终端里输入:

  $ vagrant box add hahaha ~/box/precise64.box

  hahaha 是我们给这个 box 命的名字,~/box/precise64.box 是 box 所在路径

  4. 初始化开发环境

  创建一个开发目录(比如:~/dev),你也可以使用已有的目录,切换到开发目录里,用 hahaha 镜像初始化当前目录的环境:

  $ cd ~/dev # 切换目录

  $ vagrant init hahaha # 初始化

  $ vagrant up # 启动环境

  你会看到终端显示了启动过程,启动完成后,我们就可以用 SSH 登录虚拟机了,剩下的步骤就是在虚拟机里配置你要运行的各种环境和参数了。

  $ vagrant ssh # SSH 登录

$ cd /vagrant # 切换到开发目录,也就是宿主机上的 `~/dev`

  ~/dev 目录对应虚拟机中的目录是 /vagrant

  Windows 用户注意:Windows 终端并不支持 ssh,所以需要安装第三方 SSH 客户端,比如:Putty、Cygwin 等。

  5. 其他设置

  Vagrant 初始化成功后,会在初始化的目录里生成一个 Vagrantfile 的配置文件,可以修改配置文件进行个性化的定制。

  Vagrant 默认是使用端口映射方式将虚拟机的端口映射本地从而实现类似 http://localhost:80

这种访问方式,这种方式比较麻烦,新开和修改端口的时候都得编辑。相比较而言,host-only 模式显得方便多了。

打开 Vagrantfile,将下面这行的注释去掉(移除 #)并保存:

  config.vm.network :private_network, ip: "192.168.33.10"

  重启虚拟机,这样我们就能用 192.168.33.10 访问这台机器了,你可以把 IP 改成其他地址,只要不产生冲突就行。

  6. 打包分发

  当你配置好开发环境后,退出并关闭虚拟机。在终端里对开发环境进行打包:

  $ vagrant package

  打包完成后会在当前目录生成一个 package.box 的文件,将这个文件传给其他用户,其他用户只要添加这个 box 并用其初始化自己的开发目录就能得到一个一模一样的开发环境了。

  7. 常用命令

     $ vagrant init # 初始化

$ vagrant up # 启动虚拟机
$ vagrant halt # 关闭虚拟机
$ vagrant reload # 重启虚拟机
$ vagrant ssh # SSH 至虚拟机
$ vagrant status # 查看虚拟机运行状态

$ vagrant destroy # 销毁当前虚拟机

  

更多内容请查阅官方文档 :

http://docs.vagrantup.com/v2/cli/index.html

  8. 注意事项

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

  # Apache 配置添加:EnableSendfile off# Nginx 配置添加:

  sendfile off;

来自为知笔记(Wiz)

时间: 2024-08-24 20:37:43

vagrant 使用方法的相关文章

Vagrant box ubuntu/xenial64 没有密码的解决方法

参考了Vagrant box ubuntu/xenial64 の ubuntuユーザ の passwordについて 1. 可以通过 Git Bash 使用  vagrant ssh 登录到Ubuntu/xenial64的终端中 2. 在终端中输入: vim useradd.sh 文件内容 #!/bin/bash set -Ceu USER="vagrant" # password "vagrant" を SHA-512 でハッシュ化 PASSWORD=$(perl

在主机中通过xdebug远程调试Vagrant虚拟机中drush脚本的方法

改方法是调试drush所执行的php代码的方法,同样适用于普通的cli方式运行的php程序的调试. 1.首先需要调整cli方式的xdebug.ini配置: sudo vi /etc/php5/cli/conf.d/xdebug.ini [XDebug] zend_extension="/usr/lib/php5/modules/xdebug.so" xdebug.coverage_enable=0 xdebug.default_enable=0 xdebug.remote_enable

vagrant nginx php开发环境中浏览器访问js文件,文件中出现乱码的解决方法

当nginx配置 sendfile设置为on时,某些js文件中会出现奇怪的字符: ????????????????? 不管怎么刷新,重启服务都无效: 通过google搜索之后发现原来是因为开启sendfile的原因! 将senfile设置为off,则不再出现此问题! 这个可能就是vagrant原因的造成的吧! 又是一个坑踩过了

vagrant网站中box下载方法

假设需要下载Laravel/homestead这个包. 首先定位到地址:https://app.vagrantup.com/laravel/boxes/homestead/versions/8.0.0 然后直接在后面加上 "providers/virtualbox.box"就可以下载了 (注意virtualbox.box是指供应商的名字,不同供应商提供不同名字即可) https://app.vagrantup.com/laravel/boxes/homestead/versions/8

vagrant故障记--升级虚拟机linux内核导致无法挂载共享文件夹

i'm new to use vagrant,今天升级了下vbox里的ubuntu12.04内核,结果vagrant reload后出现报错. Failed to mount folders in Linux guest. This is usually because the "vboxsf" file system is not available. Please verify that the guest additions are properly installed in t

在Win7下利用VirtualBox和Vagrant中安装Docker

1.安装VirtualBox 和 Vagrant 首先下载安装VirtualBox 和 Vagrant的windows版本,两个都安装完成后,假设Vagrant在D:\HashiCorp\Vagrant目录下. 1.1 下载 cmd进入DOS,进入目录D:\HashiCorp\Vagrant\bin,一般标准命令是: To use the available boxes just replace {title} and {url} with the information in the tabl

在Mac OS上安装Vagrant和Docker的教程

转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/128.html?1455808640 当听到很多人在说Docker是多么多么的棒,很多新潮的孩子都在使用它时,我决定在我的开发环境上也来尝试下.在下面的这篇文章中,我将讲解在Mac OS X怎样建立Postgres,Elasticsearch和Redis. 什么是Docker Docker用轻量容器把一个APP从它运行的OS中隔离开.它把APP放入到一个孤立的盒子中,对外

vagrant rsync-auto 代码同步失败报错:UndefinedConversionError

今天使用vagrant ,代码同步:vagrant rsync-auto 发现代码同步失效了,几次重启之后发现启动报错: 有点疑惑,因为1h之前还同步过修改的代码,现在突然报错,目前仍然不明原因(这1h之内没有做过任何编码设置/修改的操作,仍然诡异,留待大神研究吧~)以下直接说重点 报错的原因: vagrant的源码使用Ruby实现的,Ruby 转码的方法:encode 有转码兼容,GBK转码为UTF-8不兼容,所以报错,报错行的源代码: data << io.readpartial(READ

Vagrant 打造跨平台的开发环境

两个项目开发下来,因团队环境不一样,整合修bug成为了一件苦差事.虽然后来搭建了一台测试服务器,但是有时候受网络原因,还是不能连接到测试服务器上.因团队成员能力和习惯都不一样,有的使用windows,有的钟爱ubuntu环境开发,虽然可以各自搭建虚拟机,但是涉及到环境工具插件等安装也会导致环境出现差别.这样的问题明显跟团队协作背道而驰,不符合程序员的逻辑,肯定有相应的办法解决.这办法就是Vagrant,而且vagrant是open source的. step1:安装虚拟机支持环境:Virtura