在Windows下安装Vagrant的方法和注意事项
发布时间 - 2017-08-22 00:00:00 点击率:次做web开发少不了要在本地搭建好开发环境,虽然说目前各种脚本都有对应的windows版,甚至是一键安装包,但很多时候和windows环境的相性并不是那么好,各麻烦的问题是实际部署的环境通常是linux,常常还要面临着开发和部署环境不一致,上线前还要大量的调试。
Windows下玩Linux少不了虚拟机,但装系统依旧是相当费事。在现在什么都在自动化的今天,Vagrant就是这么一个神器,基于Ruby开发,使用开源 VirtualBox 作为虚拟化支持,可以轻松的跨平台部署。
今天试着把几台机器的环境都换成Vagrant,很爽很顺畅,我本人实测发现,运行一个centos只需要不到60兆内存,相当的给力。
下面说下安装步骤,顺便把注意点说一下!
准备工作:
下载安装 VirtualBox :https://www.virtualbox.org/
下载安装 Vagrant :http://www.vagrantup.com/
下载需要使用的 box :
官方提供的范例:http://files.vagrantup.com/precise32.box
还可以在 http://www.vagrantbox.es/ 这里下载更多不同系统甚至是已经配置好环境直接可以用的box,虽然可以直接在Vagrant直接使用网址,由Vagrant自动下载安装,但是考虑到网络情况,还是建议自行先下载好。
由于习惯用CentOS,于是我就下了CentOS 6.3 x86_64 minimal,这个Box根据个人情况进行选择即
可。
设置环境:
安装完成并且重启好系统之后就可以开始设置环境了。
首先在本地创建好工作目录,并在命令行下切换到对应目录
vagrant box add base CentOS-6.3-x86_64-minimal.box
base 表示指定默认的box,也可以为box指定名称,比如 centos63 ,使用base时,之后可以直接使用 vagrant init 进行初始化,如果自行指定名称,则初始化的时候需要指定box的名称。
CentOS-6.3-x86_64-minimal.box 是box对应的文件名,这里可以是本地保存box的路径,也可以是可以下载box的网址,如果是网址的话,Vagrant会自动启动下载。
[vagrant] Downloading with Vagrant::Downloaders::File... [vagrant] Copying box to temporary location... [vagrant] Extracting box... [vagrant] Verifying box... [vagrant] Cleaning up downloaded box...
设置好box之后,在当前工作目录运行
vagrant init
生成对应的Vagrantfile。通过文本编辑器打开Vagrantfile可以进行一些进一步的常用配置:
网络配置:
Vagrant的网络有三种模式
1、较为常用是端口映射,就是将虚拟机中的端口映射到宿主机对应的端口直接使用 ,在Vagrantfile中配置:
config.vm.network :forwarded_port, guest: 80, host: 8080
guest: 80 表示虚拟机中的80端口, host: 8080 表示映射到宿主机的8080端口。
2、如果需要自己自由的访问虚拟机,但是别人不需要访问虚拟机,可以使用private_network,并为虚拟机设置IP ,在Vagrantfile中配置:
config.vm.network :private_network, ip: "192.168.1.104"
192.168.1.104 表示虚拟机的IP,多台虚拟机的话需要互相访问的话,设置在相同网段即可
3、如果需要将虚拟机作为当前局域网中的一台计算机,由局域网进行DHCP,那么在Vagrantfile中配置:
config.vm.network :public_network
目录映射:
既然是开发环境,那么开发工作肯定还是需要在本地完成,而不是都要进到虚拟机中去完成,虚拟机就好好在后台运行服务就好了,不然就本末倒置了,所以这里就需要使用目录映射功能,将本地的目录映射到虚拟机的对应目录。
默认情况下,当前的工作目录,会被映射到虚拟机的 /vagrant 目录,当前目录下的文件可以直接在 /vagrant 下进行访问,当然也可以在通过 ln 创建软连接,如
ln -fs /vagrant/wwwroot /var/www
来进行目录映射,当然,从自动化配置的角度,能不进系统就不需要进系统,所以在Vagrant也可以进行目录映射的操作:
config.vm.synced_folder "wwwroot/", "/var/www"
前面的参数 “wwwroot/” 表示的是本地的路径,这里使用对于工作目录的相对路径,这里也可以使用绝对路径,比如: “d:/www/”
后面的参数 “/var/www” 表示虚拟机中对应映射的目录。
运行脚本:
虽然不是必须,但是如果有需要在启动时运行一些脚本(环境的安装或者有些服务的启动需要在完成目录映射之后进行),可以编辑脚本,类似如下(摘自Vagrant Document):
#!/usr/bin/env bash apt-get update apt-get install -y apache2 rm -rf /var/www ln -fs /vagrant /var/www
保存在和Vagrantfile相同目录,文件名自取(如 boot.sh),然后在Vagrantfile中添加:
config.vm.provision :shell, :path => "boot.sh"
当初次使用基本的设置都完成则之后,则可以使用 vagrant up 启动虚拟机
Bringing machine 'default' up with 'virtualbox' provider... [default] Setting the name of the VM... [default] Clearing any previously set forwarded ports... [default] Creating shared folders metadata... [default] Clearing any previously set network interfaces... [default] Preparing network interfaces based on configuration... [default] You are trying to forward to privileged ports (ports < = 1024). Most operating systems restrict this to only privileged process (typicallyprocesses running as an administrative user). This is a warning in case the port forwarding doesn't work. If any problems occur, please try a port higher than 1024. [default] Forwarding ports... [default] -- 22 => 2222 (adapter 1) [default] -- 80 => 8080 (adapter 1) [default] Booting VM... [default] Waiting for VM to boot. This can take a few minutes. [default] VM booted and ready for use! [default] The guest additions on this VM do not match the installed version of VirtualBox! In most cases this is fine, but in rare cases it can cause things such as shared folders to not work properly. If you see shared folder errors, please update the guest additions within the virtual machine and reload your VM. Guest Additions Version: 4.1.18 VirtualBox Version: 4.2 [default] Mounting shared folders... [default] -- /var/www [default] -- /vagrant [default] Running provisioner: shell...
虚拟机启动之后则可以通过 vagrant ssh 联入虚拟机进行进一步的环境配置,或者软件安装相关的工作,在Windows系统下,并不能直接通过 vagrant ssh 连到虚拟机,需要使用 Putty,Xshell 等第三方工具进行连接
连接的IP和端口根据网络环境配置的不同有所不同,如果是默认使用端口映射的话,一般是连接 本地的2222端口。
登录的帐号密码均为 vagrant ,登录之后如果需要 su root ,密码也是 vagrant
注:使用 vagrant ssh 时,会提示可以使用密钥进行登录,如果需要使用putty进行密钥登录的话,需要下载 puttygen 将 ssh 的密钥转换为 ppk 文件才能使用。
登录ssh完成环境的配置,如果在开发环境中使用webserver(nginx/apache)为了避免一些静态文件处理的问题,可能还需要进行一些额外的配置:Vagrant下共享目录静态文件(js/jpg/png等)“缓存”问题
在不进入虚拟机的情况下,还可以使用下面的命令对 虚拟机进行管理:
vagrant up (启动虚拟机) vagrant halt (关闭虚拟机——对应就是关机) vagrant suspend (暂停虚拟机——只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用) vagrant resume (恢复虚拟机 —— 与前面的暂停相对应) vagrant destroy (删除虚拟机,删除后在当前虚拟机所做进行的除开Vagrantfile中的配置都不会保留) 当在启动Vagrant后,对于虚拟机有进行过安装环境相关的配置,如果并不希望写在Vagrant的启动shell里面每次都重新安装配置一遍,可以将当前配置好的虚拟机打包成box, vagrant package --output NAME --vagrantfile FILE
可选参数:
--output NAME : (可选)设置通过NAME来指定输出的文件名
--vagrantfile FILE:(可选)可以将Vagrantfile直接封进box中
注:如果网络模式中使用 private_network 的话,在打包之前需要清除一下private_network的设置,避免不必要的错误:
sudo rm -f /etc/udev/rule.d/70-persistent-net.rules
制作完成之后直接将box文件拿到其他计算机上配置即可使用。
注意点: 1.如果在windows下无法启动,则可以开启box的gui端,这样就可以看到出现什么问题。
开启方法:
修改Vagrantfile文件,添加一下内容:
config.vm.provider :virtualbox do |vb|
vb.gui = true
end
我就遇到了这个问题,虚拟机需要VT虚拟技术支持,所以要开启VT
# windows
# 可以直接
# 可以使用
# 可选
# 则可
# 我就
# 还可以
# 机中
# 端口映射
# 少不了
# 就可以
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
简单实现Android验证码
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
如何快速搭建虚拟主机网站?新手必看指南
Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转
HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】
如何构建满足综合性能需求的优质建站方案?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
北京专业网站制作设计师招聘,北京白云观官方网站?
Laravel怎么连接多个数据库_Laravel多数据库连接配置
html5如何设置样式_HTML5样式设置方法与CSS应用技巧【教程】
如何快速使用云服务器搭建个人网站?
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
如何快速搭建自助建站会员专属系统?
Laravel怎么使用Intervention Image库处理图片上传和缩放
Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门
微信小程序 require机制详解及实例代码
Android滚轮选择时间控件使用详解
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
微信小程序 配置文件详细介绍
Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧
公司门户网站制作流程,华为官网怎么做?
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
Laravel如何使用Blade模板引擎?(完整语法和示例)
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
Laravel怎么在Blade中安全地输出原始HTML内容
Python图片处理进阶教程_Pillow滤镜与图像增强
如何在建站之星绑定自定义域名?
如何基于PHP生成高效IDC网络公司建站源码?
如何在 Go 中优雅地映射具有动态字段的 JSON 对象到结构体
Python3.6正式版新特性预览
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】
如何在宝塔面板创建新站点?
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
做企业网站制作流程,企业网站制作基本流程有哪些?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)
如何为不同团队 ID 动态生成多个“认领值班”按钮
Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程
郑州企业网站制作公司,郑州招聘网站有哪些?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
长沙做网站要多少钱,长沙国安网络怎么样?
Laravel如何使用Vite进行前端资源打包?(配置示例)
晋江文学城电脑版官网 晋江文学城网页版直接进入
Python结构化数据采集_字段抽取解析【教程】
PHP 500报错的快速解决方法
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?

