作为一名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`查看文件名与文件内容是否相同。