作为一名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版本信息。

初始化虚拟机
我们在某个空文件夹下,调出Terminal,并输入vagrant init centos/7

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

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

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

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

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

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

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

再输入两次密码后,便可以使用su root切换到root用户了。
退出虚拟机
可是使用logout退出虚拟机,回到宿主机。

关闭虚拟机
在回到宿主机下,方能使用vagrant的所有命令。
vagrant halt

配置私有网络(内部网络/局域网网络)
在虚拟机搭建起的服务,总得需要外部来访问吧,这其中当然就包括宿主机,所以,就需要就知道虚拟机的IP地址。
我们打开前面用Vagrant init初始化的虚拟机,自动为我们生成了一个vagrantfile配置文件。
打开注释。
config.vm.network "private_network", ip: "192.168.33.10"

还需配置一个使用频繁的文件传输功能,毕竟,我们在宿主机开发的程序,需要传输到虚拟机进行部署调试,那么,宿主机与虚拟机之间的文件传输就再所难免,在使用过VirtualBox 或VMware等虚拟化工具时,文件传输总是令人头疼。然而,Vagrant通过文件夹映射,实现了宿主机与虚拟机之间能很好的进行文件传输。
还是在vagrantfile配置文件中,去掉文件夹间的映射前的注释。
config.vm.synced_folder "./data", "/vagrant_data"
./data是在宿主机下的文件夹,也就是与vagrantfile配置文件同属一个路径下。
/vagrant_data是虚拟机内的文件夹。


校验配置文件
虽然目前我们都是去掉了vagrantfile文件中原有配置前的注释,目测是不会发生错误的。但如果某些配置不在该vagrantfile文件中呢?而修改完了该文件后,并没有去校验vagrantfile文件是否配置正确,就去vagrant up虚拟机,那么出错是不可避免的!
甭管当前虚拟机是处于关闭状态,还是正在运行中,对vagrantfile文件做了任何修改,都必须对vagrantfile进行校验,直至vagrantfile校验正确,方可vagrant up(启动虚拟机)或 vagrant raload(重新载入,也就是当前虚拟机正处于正在运行中,而你却修改了vagrantfile文件,那么只需对vagrantfile重新加载即可)。
vagrant validate

当改动后的vagrantfile校验成功,我们便可以vagrant up启动虚拟机了。
在启动虚拟机期间,我们有看到输出信息里,关于文件映射的配置便出现在Terminal中了。

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



