资讯专栏INFORMATION COLUMN

搭建Linux工作环境之Vagrant

elisa.yang / 979人阅读

摘要:序言做为的爱好者表示对没有完整易用的命令行工具的平台无爱但是在长期使用中深感它的图形界面实在太糟糕了通常有三种方式来获得的体验一是平台它实现了将软件的底层调用转换为的二是安装双系统但图形界面的容错性很差经常会显示软件崩溃三是使用虚拟机在或上

live with scope

序言

做为Linux的爱好者, 表示对没有完整易用的命令行工具的Windows平台无爱. 但是, 在Linux长期使用中, 深感它的图形界面实在太糟糕了. 通常有三种方式来获得Linux的体验, 一是Cygwin平台, 它实现了将Linux软件的底层API调用转换为WindowsAPI. 二是安装双系统, 但Linux图形界面的容错性很差, Ubuntu经常会显示软件崩溃. 三是使用虚拟机, 在VMwareVirtualBox上.

Vagrant是个虚拟机管理器, 它主要做这样几件事: 1, 将虚拟机打包成box; 2, 将box分发; 3, 第三者获取box, 解压获得虚拟机. 它解决的主要痛点是, 如何为团队成员搭建相同的开发环境, 以解决软件运行依赖问题. 程序员的经典梗之一: 这代码在我机子上运行正常啊, 怎么上传到服务器上就挂了呢. 当然, 简单粗暴的方法是将虚拟机每人拷贝一份.

对我而言, 没有什么统一开发环境的需求, 我主要使用它来快速搭建特定环境. 如, 我制作一个基础box, 在基础上搭建python开发环境, 搭建rails开发环境, 搭建R开发环境等. 当需要的时候, 随时可以由box来快速获取想要的环境.

初步

在官网https://www.vagrantup.com/下载对应平台的软件包安装. Vagrant不用来建立虚拟机, 因此确保你安装有VirtualBox. 因为VMware版本的好像收费. 虽然, 官方教程是让你从网上下载制作好的box, 但考虑到网速, 以及信任问题, 这里会一步步教大家自己制作box, 这样才有意思.

建虚拟机

这种事对任何一个开发人员都是小意思. 这里主要注意几点就OK了. 这里主要使用Ubuntu发行版, 其他版本会有些许差异.

请将用户名和密码都设置为vagrant, 毕竟之后的box会分发给第三者

安装ssh, 命令: sudo apt-get install openssh-server

修改root密码为vagrant,命令: sudo passwd root

设置vagrant用户sudo免密码, 建议在/etc/sudoers.d/目录新建文件并写入vagrant ALL=(ALL) NOPASSWD: ALL

添加公钥到~/.ssh/authorized_keys文件. 可以使用自己的公钥, 也可以使用Vagrant公开的, 命令: wget https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub -O ~/.ssh/authorized_keys. 确保.ssh目录权限为0700authorized_keys文件权限为0600.

推荐安装虚拟机增强包guest additions package来实现文件共享, 点击安装增强包后, 命令: sudo mount /dev/cdrom /media/cdrom; cd /media/cdrom; sudo ./VBoxLinuxAdditions.sh, 视需要可能要安装依赖sudo apt-get install linux-headers-generic build-essential dkms

配置软件源, 安装需要的软件, 更新系统设定虚拟机的端口转发, 图形设置:控制->设置->网络->端口转发,关键的两点是主机端口任意和虚拟机端口22

基本上, 以上就是主要操作了, 除了第1个是在VirtualBox建虚拟机时设定的, 第8条是在VirtualBox上设定虚拟机的参数, 其余全是在虚拟机内进行的. 这些都是标准设定, 你可以改变用户名和密码, 根用户密码, 以及公钥, 只是需要在项目目录的Vagrantfile文件进行相应的参数设定.

打包为Box

启动cmd, 输入命令vagrant package --base vmname --output /path/to/boxname.box生成Base Box.

vmnamevirtualbox虚拟机列表中的名字, 新建虚拟机时输入的名称, 省略--output时默认在当前目录下生成.box文件. 命令可在任意目录下执行.

执行命令前最好先关闭虚拟机,就目前的情况看,虽然vagrant能自动ssh到虚拟机并执行关机命令,但在windows执行失败,不确定和平台有没有关系.

如果当前虚拟机本身是从Box解压生成的, 你安装了些软件, 更新了下系统, 反正是做出些改变, 可以省略--base vmname参数, 以将改动后的虚拟机重打包成box以分发.

通过vagrant box add boxurl --name boxnamebox添加到全局环境中. 此命令最好在box的生成目录下进行, 否则需要其完整路径. boxurl随意, 唯一的用处是全局定位指定的box, 以方便解压生成虚拟机, 而不用指定box文件的完整路径.

生成虚拟机

新建项目目录并切换, 执行vagrant init boxurl命令. 生成.vagrant目录, 包含ssh到虚拟机的私钥, 以及Vagrantfile文件, 用于虚拟机的参数设定.

好了, 你现在从指定的box生成了一个新的虚拟机, 对这个虚拟机的所有操作都不会影响到box, 在不需要时完全可以删除.

以下命令是经常使用的:

vagrant up  # 开机
vagrant ssh  # 连接
vagrant halt  # 关机
vagrant suspend  # 相当于休眼
vagrant resume  # 恢复
vagrant destroy [-f] # 删除虚拟机
更多的命令

管理系统的box

vagrant box remove boxname移除box
vagrant box list查看全局box
vagrant box outdated检查当前项目使用的box是否有更新
vagrant box repackage NAME PROVIDER VERSION重打包box到当前目录,其中3个参数由vagrant box list获取.是add解压的反过程
vagrant box update [--box boxname]更新box,但并不反应在当前项目的虚拟机上,需要destroy后再up
额外的说明

windows平台,请确保ssh程序在path中,或者通过你喜欢的ssh client,如putty, xshell. 默认up时会建立主机2222端口到虚拟机22端口的映射, 并删除此前添加的公开公钥而使用随机生成的公钥, 而对应的私钥存储在当前项目目录的.vagrantmachinesdefaultvirtualboxprivate_key, 用户名为vagrant.

开启虚拟机后,并不显示虚拟机, 但其确实已运行, 打开virtualbox后可看到项目运行的虚拟机名,点击显示则可显示虚拟机. 或者说, 虚拟机默认以headless模式运行, 也就是不显示界面, 这是VirtualBox提供的功能.

就我个人理解来看, 实际上, 上述的功能都可以通过VboxManage命令来进行. Vagrant对虚拟机的管理, 要么通过VirtualBox提供的开发接口来实现, 要么能过ssh到虚拟机中来实现.

最后, Vagrant是用Ruby开发的.

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/9324.html

相关文章

  • 搭建Linux工作环境VirtualBox

    摘要:序最近需要搭建多虚拟机模拟集群来运行平台我又重新翻开了之前的使用笔记重新整理后发了上来搭建虚拟机主要使用和两个软件通常情况如果建立服务器环境的虚拟机我使用否则使用考虑到任务主要是运行平台并不需要桌面环境要尽可能节省资源又考虑到的开源免费跨平 showImg(https://segmentfault.com/img/bVxR0K); live with scope 序 最近需要搭建多虚拟...

    yexiaobai 评论0 收藏0
  • win10下搭建virtualbox+vagrant+centos7box

    摘要:网址是一款基于的工具,用于创建和部署虚拟化开发环境,使用的虚拟化系统。解决了在我电脑上可以正常运行啊的情况。网址由于官网下载速度捉急,请保存到百度云自行下载到本地链接密码添加及配置下载好后,请找到在本地的路径,我的路径是。 作为一个javaweb开发者,一直使用windows作为开发系统,多少有点和行业不太匹配,对Linux开始产生兴趣,一方面想熟悉使用Linux作为后台系统做web开...

    KoreyLee 评论0 收藏0
  • win10下搭建virtualbox+vagrant+centos7box

    摘要:网址是一款基于的工具,用于创建和部署虚拟化开发环境,使用的虚拟化系统。解决了在我电脑上可以正常运行啊的情况。网址由于官网下载速度捉急,请保存到百度云自行下载到本地链接密码添加及配置下载好后,请找到在本地的路径,我的路径是。 作为一个javaweb开发者,一直使用windows作为开发系统,多少有点和行业不太匹配,对Linux开始产生兴趣,一方面想熟悉使用Linux作为后台系统做web开...

    figofuture 评论0 收藏0
  • 使用 VirtualBox + Vagrant + 宝塔 Linux 面板搭建本地虚拟开发环境

    摘要:之后每次对配置文件进行更改时,都需要重载,重载命令。五安装宝塔面板打开宝塔面板官网,因为虚拟机用的是环境,所以我们去面板专区。在网页的最下端给出了宝塔面板的安装方法。 以前在 Windows 上搞 PHP 开发的时候用的是 wamp 或者 phpstudy 这些本地开发环境,现在转战到 Mac 后,本想着像以前一样的弄个本地开发环境,但得知了 vagrant 后,毅然决定更换开发方法。...

    cocopeak 评论0 收藏0
  • vagrant尝鲜及docker搭建nignx与reids

    摘要:启动虚拟机,命令关闭虚拟机,查看运行状态。此外如果修改了,也是执行该命令重新创建容器。该命令会同时会在前台启动容器并打印容器内的控制台日志,方便查看是否启动成功。安装通过部署也是十分简单,不用纠结版本和依赖及配置的问题。 虚拟化、容器化是这几年来十分流行的一个理念,它使用隔离的手段,将不同服务的依赖、配置等隔离开来,大大降低了管理成本及维护负担。vagrant是一款抽象层次更高的虚拟环...

    jubincn 评论0 收藏0

发表评论

0条评论

elisa.yang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<