概述
在windows做开发的时候,发布上线的时候,总是由于运行环境的差异,而在线上发现一些不必要的问题,因此需要将本地的开发环境与线上运行环境一致,就可以避免这些问题。
在此技术上,考虑在window机器上搭建Linux环境,最常见的就是使用虚拟机。我使用的是vagrant来管理我的虚拟机,下面记录我搭建vagrant + vbox + centos的搭建过程。
该过程同样适用于其他的linux版本。
安装软件
-
**** 下载安装最新版本的vagrant ****
下载页面中,有各种版本下的软件下载,特别需要注意的是,下载的时候会没有下载进度,估计是被墙了,最好能翻墙下载该软件。 -
**** 下载安装最新版本的VirtualBox ****
这个下载起来就比较快了,直接安装相应版本的vbox即可。
其实用vmware也可以来替代vbox的,但是个人感觉,vmware教vbox耗性能。自己试过,在同一个电脑上,安装vbox、vmware,vbox要比vmware快好多。 -
**** 安装好vagrant之后,软件会将
vagrant命令,自动注册到系统变量,所以可以在命令行下直接执行vagrant --version命令测试是否安装成功。****
截至目前位置,我们只是安装了容器软件,真正的linux系统并没有下载。通过vagrant来管理vbox的镜像包的话,有vagrant专用的box,自己下载的iso镜像文件,并不能用的。 -
**** 下载需要的版本的镜像包box ****
其实也可以不用手动下载镜像包,因为在vagrant首先创建一个文件夹 box add的时候,也可以指定box包,直接在远程下载的。但是这个在国内的下载速度,也是非常慢的,所以,最好提前下载好,在vagrant add box的时候,直接指定包的位置即可。
安装Linux系统
-
**** 设定vbox默认虚拟电脑位置 ****
如果不设置虚拟电脑目录的话,系统安装linux的时候,会将linux文件,安装到vbox默认的windows系统盘。没必要无故占用系统盘空间。因此这里提前约束好。

-
**** 创建vagrant的配置文件路径,该路径存放配置文件:Vagrantfile ****
该路径,是vbox内控制linux配置的文件:设置网络、设置共享文件夹、设置linux内存等。并且默认,该目录会被自动挂在到虚拟机内的linux中 -
**** 添加、初始化、运行 ****
进入上一步骤创建的路径目录。
在目录内使用:vagrant box add linux_name box_path命令,添加box包到vagrant。linux_name是虚拟机内部linux系统名,是唯一标识vagrant中一个虚拟机的名字。box_path设置为刚才下载的box文件的全路径。
在目录内使用:vagrant init命令,生成Vagrantfile配置文件。
执行:vagrant up命令,初次安装。安装成功后,该命令启动系统。
截止到目前为止,虚拟机中的系统已经安装完成。
常用的配置
-
**** 网络设置 ****
关于网络设置,有3中设置:-
forwarded_port-端口映射:该模式是通过端口映射,来判别是访问主机,还是虚拟机。例如可以设置所有通过8989端口的访问,都映射到虚拟机内部的80端口:
config.vm.forwarded_port 80, 8989。该方式优点是简单,容易设置。容易实现外网访问虚拟机。但是对于有多个端口需要映射配置的时候,就很吃力了。不可能每次增加一个端口,就增加一个映射关系的。 -
private_network-私有网路:我用的最多的也是这种网络,他只允许主机和虚拟机互通。同网络的其他主机,不能访问该虚拟机。
config.vm.network "private_network", ip: "192.168.33.188",该配置开启的时候,在vagrant reload配置文件的时候,会在本机创建一个host-only的网络。其实这种方式就是虚拟机的host-only模式。 -
public_network-公用网络:和虚拟机一样,也是在内网的一个真实存在的机器,和其他主机可以相互访问。需要占用一个独立的IP:
config.vm.network "public_network", ip: "192.168.1.120"
-
-
**** SSH连接-登录-账号-启用root ****
默认的SSH登录的账号和密码是:vagrant vagrant。我们可以通过xshell客户端,通过vagrant账号进入系统然后:sudo paswd root命令,设置一个root账号的密码。
然后退出xshell,直接用root账号连接即可。 -
**** 共享文件夹的设置 ****
系统默认会将刚才创建的配置文件的目录挂载到虚拟机内部的:/vagrant目录。常用的配置选项有:-
create(boolean)--可选:默认为false,若配置为true,挂载到虚拟机上的目录若不存在则自动创建。
-
disabled(boolean)--可选:默认为false,若为true,则禁用该项挂载
-
owner(string):'www'--可选:虚拟机系统下文件所有者(确保系统下有该用户,否则会报错),默认为vagrant
-
group(string):'www'--可选:虚拟机系统下文件所有组( (确保系统下有该用户组,否则会报错),默认为vagrant
-
mount_options(array):["dmode=775","fmode=664"]--可选:dmode配置目录权限,fmode配置文件权限 //默认权限777
-
type(string):--可选:指定文件共享方式,例如:'nfs',vagrant默认根据系统环境选择最佳的文件共享方式
例如:需要如下配置:取消自动挂载的vagrant目录,将自动挂载的文件用户、用户组指定为:root,挂载的目录的权限设置为:775,可以做如下配置:
-
config.vm.synced_folder "e:/www", "/mnt/www", owner: "root", group: "root", mount_options: ["dmode=775","fmode=664"]
config.vm.synced_folder ".", "/vagrant", disabled:true
- **** 设置虚拟机内存 ****
将下面注释的这行打开,并且做如下设置:config.vm.provider "virtualbox" do |vb| #vb.gui = true #这个选项可以不开启,控制vagrant启动的时候,是否启动vbox客户端。 vb.memory = "4096" #占用内存大小。 vb.memory = "4096"
常用命令
- vagrant box add
新增box包 - vagrant box list 列出当前vagrant中的包
- vagrant box remove
删除vagrant中的包 - vagrant init 初始化配置文件
- vagrant up 启动系统
- vagrant reload 重启系统,会重新载入Vagrantfile配置文件,一般有配置文件更改的时候,执行该命令。
- vagrant halt 关闭系统