侧边栏壁纸
博主头像
秋码记录

一个游离于山间之上的Java爱好者 | A Java lover living in the mountains

  • 累计撰写 134 篇文章
  • 累计创建 287 个标签
  • 累计创建 44 个分类

怎样快速搭建 Linux 虚拟机呢?(vagrant 篇)

作为一名Coder(程序员或码农),供职于中小型互联网公司,而你恰恰偏向于服务端,那么,产品部署在生产环境艰巨任务,便毫无疑问的落在你身上了。

只有大厂(大型互联网)企业才有运维部,而能进大厂的显然是少部分人,大多数Coder终究还是混迹于初创中小型互联网公司,一名服务端 Coder往往都是身兼数职,甚至有可能干掉frontend(这也就是初创或·中小型·互联网公司在Job Descriptio[职位描述]中,要求你在懂得服务端技术知识,还需熟悉frontend相关内容),当然咯,也有些中小型公司会分工明确,虽然没设立什么运维部,但起码也有一两个深耕于Linux 服务器多年的运维人员。

甭管你是Full Stack engineer(全栈),抑或是backend(服务端),总逃不掉要将开发完成的程序部署到服务器上吧!由于开发环境生产环境之间存在着差异,从而导致了你按照开发环境所需的必要准备,在生产环境开始部署程序,出乎意料的一幕总能让你吃惊不已,你挠着头,口中喃喃说道,“这不可能吧,都按着必要环境部署的,不应该啊!……”

所以嘛,在把程序部署到生产环境之前,我们有必要在本地安装虚拟机,而这虚拟机所对应的系统便是生产环境上的系统,之后在该虚拟机上安装程序运行的必要条件,随后,在虚拟机环境里调试程序,等一切调试妥当后,方可部署到生产环境中。

安装 Vagrant

安装 VirtualBox

在安装Vagrant之前,我们必须安装一个虚拟化工具,它是跨平台的,也就是说,搭建一个虚拟机,安装了它就可以,Vagrant可以到一边凉快去了。

既然它(VirtualBox)本身就可以搭建一个虚拟机,而为什么又要Vagrant呢?对于这个问题,我不置可否,你回过头看看本文的标题,其中有个关键词——快速(虽然有点夸张的成分),你或许便能明白了。

至于怎么安装 VirtualBox,不在本文的范畴内,况且它跟其他软件安装方式一样,一路Next(下一步)下去 。

VirtualBox 官方地址:https://www.virtualbox.org/

安装 Vagrant

在安装完VirtualBox,接着安装Vagrant,而它的安装也是同安装其他软件一样,一路Next(下一步)下去,除非你要修改安装路径

Vagrant官方地址:https://www.vagrantup.com/ 。

安装好Vagrant后,可以在Terminal中输入vagrant version,便会输出当前安装的Vagrant版本信息。

image-20240824124714021

初始化虚拟机

我们在某个空文件夹下,调出Terminal,并输入vagrant init centos/7

image-20240824125154553

当初始化成功之后,会在当前目录下自动生成一个Vagrantfile配置文件。

image-20240824130547838

你可在这里:https://portal.cloud.hashicorp.com/vagrant/discover 找到你想要的系统

image-20240824125548509

我们启动刚刚安装好的VirtualBox软件,可以看出目前是没有任何虚拟机

image-20240824130921187

我们再次回到Vagrant初始化虚拟机的Terminal中,继续输入vagrant up命令,用于启动虚拟机

image-20240824131248901

当我们转过身,去看VirtualBox,明显有一个虚拟机正在运行。

image-20240824131439696

连接到虚拟机

我们可以在当前Terminal中,键入vagrant ssh进入虚拟机,默认是vagrant用户。

image-20240824134510338

可是有时在Linux安装软件时,是需要root权限的,那么,总得使用root来操作吧!

sudo passwd root

image-20240824135914698

再输入两次密码后,便可以使用su root切换到root用户了。

退出虚拟机

可是使用logout退出虚拟机,回到宿主机

image-20240824140351574

关闭虚拟机

在回到宿主机下,方能使用vagrant的所有命令。

vagrant halt

image-20240824140814142

配置私有网络(内部网络/局域网网络)

虚拟机搭建起的服务,总得需要外部来访问吧,这其中当然就包括宿主机,所以,就需要就知道虚拟机IP地址。

我们打开前面用Vagrant init初始化的虚拟机,自动为我们生成了一个vagrantfile配置文件。

打开注释

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

image-20240824141653430

还需配置一个使用频繁的文件传输功能,毕竟,我们在宿主机开发的程序,需要传输到虚拟机进行部署调试,那么,宿主机虚拟机之间的文件传输就再所难免,在使用过VirtualBoxVMware虚拟化工具时,文件传输总是令人头疼。然而,Vagrant通过文件夹映射,实现了宿主机虚拟机之间能很好的进行文件传输

还是在vagrantfile配置文件中,去掉文件夹间的映射前的注释。

  config.vm.synced_folder "./data", "/vagrant_data"

./data是在宿主机下的文件夹,也就是与vagrantfile配置文件同属一个路径下。

/vagrant_data虚拟机内的文件夹。

image-20240824143355516

image-20240824143014474

校验配置文件

虽然目前我们都是去掉了vagrantfile文件中原有配置前的注释,目测是不会发生错误的。但如果某些配置不在该vagrantfile文件中呢?而修改完了该文件后,并没有去校验vagrantfile文件是否配置正确,就去vagrant up虚拟机,那么出错是不可避免的!

甭管当前虚拟机是处于关闭状态,还是正在运行中,对vagrantfile文件做了任何修改,都必须对vagrantfile进行校验,直至vagrantfile校验正确,方可vagrant up(启动虚拟机)或 vagrant raload(重新载入,也就是当前虚拟机正处于正在运行中,而你却修改了vagrantfile文件,那么只需对vagrantfile重新加载即可)。

vagrant validate

image-20240824145552503

当改动后的vagrantfile校验成功,我们便可以vagrant up启动虚拟机了。

在启动虚拟机期间,我们有看到输出信息里,关于文件映射的配置便出现在Terminal中了。

image-20240824150341422

若你还是有所迟疑的话,那么可以在宿主机data文件夹下新建hello.txt,写入一些内容,而后使用vagrant ssh连接到虚拟机,在虚拟机/vagrant_data`查看文件名与文件内容是否相同。

image-20240824150847736

image-20240824153710700

个人站点迁移之gitlab.com pages 绑定自定义域名
« 上一篇 2024-08-12
虚拟机 Linux 安装 JDK(Vagrant 之二 CentOS7 篇)
下一篇 » 2024-08-29

相关推荐