phper 的进阶之路 --- Vagrant 与 Virtualbox

1、下载Virtualbox 并安装:

        官网下载 Virtualbox ,选择相应的版本下载并安装  (涉及 Virtualbox 的安装 目录

2、配置 Virtualbox 

    主要是配置 Virtualbox 的 虚拟电脑位置,避免占用系统盘

打开 Virtualbox ,选择  管理 -->全局设定 ----> 常规 ---> 默认虚拟电脑位置(选择自定义的目录,方便后期删除)



3、下载安装        vagrant:

        官网下载vagrant,并安装相应 的 版本(涉及vagrant 的安装目录)https://app.vagrantup.com/boxes/search

同时,会生成vagrant.d文件夹,该文件下的boxes文件用来存放虚拟机的系统镜像文件,可以在 Vagrant Cloud 里面下载;

可以修改系统镜像默认存放的路径:把vagrant.d文件夹拷贝到目标文件中,然后把这个目录添加到环境变量中(win:永久设置用户的环境变量setx VAGRANT_HOME "/your/path"永久设置系统的环境变量setx VAGRANT_HOME "/your/path" /M

4、如何下载系统镜像文件到vagrant.d/boxs中???

      远程:   vagrant  box add   boxName(系统镜像文件)     添加系统镜像文件到vagrant.d/boxs文件夹中

     查看本地box (box也是系统镜像文件): vagrant  box  list

   如何将本地下载好的镜像文件添加到vagrant.d/boxs中:

vagrant box add my-box file:///C:/Users/Administrator/.vagrant.d/boxes/ubuntu-server-16.04-amd64-vagrant.box

5、实例化虚拟机:     (自定义目录

        (1)进入文件目录,执行命令   vagrant  init  [ boxName ],该指令会在当前文件中创建一个Vagrantfile 文件,里面存放的是虚拟机的配置信息;包括端口映射(config.vm.network :forwarded_port, guest: 80, host: 8080)、网络配置(config.vm.network "public_network")、目录映射(config.vm.synced_folder "D:/www", "/var/www/html"

        (2)创建并启动虚拟机: vagrant  up      该指令会根据当前文件下的Vagrantfile配置文件,创建一个虚拟机 

        (3)使用 vagrant  ssh  指令进入到虚拟机,如果没有任何反应,就打开Virtualbox ,并单击对应的虚拟机;如果提示(VT-x/AMD-V 硬件加速在您的系统中不可用。您的 64-位虚拟机将无法检测到 64-位处理器,从而无法启动。),

     处理步骤:

1.重启电脑进入BIOS,找到CPU Configuration> Intel Virtualization Technology,设置为Enabled。

2.保存退出,重启电脑,再次启动虚拟机。

3.一切正常了。

(4)关闭(停止)虚拟机:  vagrant  halt  (关机)    会清空虚拟机的所有状态

(5)重启虚拟机:  vagrant  reload (修改完配置文件后,若想使配置文件生效的话,就必须reload)

(6)删除虚拟机: vagrant destroy  

(7)删除系统镜像文件: vagrant box remove  [ 系统镜像文件名 ]

查看虚拟机的状态:  vagrant  status   

暂停虚拟机:  vagrant  suspend    此时虚拟机会 记录当前的状态,当再次启动时,会恢复上一次的状态

恢复虚拟机:vagrant  resume    恢复暂停的虚拟机

add box的时候默认保存在 C:\Users\xxx\.vagrant.d

 VAGRANT_HOME can be set to change the directory where Vagrant stores global state. By default, this is set to ~/.vagrant.d. The Vagrant home directory is where things such as boxes are stored, so it can actually become quite large on disk.

 

 通过设置VAGRANT_HOME环境变量改变默认位置

setx VAGRANT_HOME "X:/your/path"
setx VAGRANT_HOME "X:/your/path" /M (系统变量)




三: 使用完毕的卸载工作:

        先卸载 相关的虚拟机 ,然后删除相关的目录,卸载掉Virtualbox 和 vagrant 


上述所有的步骤设计到的目录: 

(1)virtualBox 的安装目录、virtualBox  虚拟机存放目录 (vagrant  up启动的虚拟机)

(2)vagrant 的安装目录 、系统镜像文件的存放目录(vagrant  box )、项目目录(vagrant  init   对应的目录)

详细资料: 宁--   https://ninghao.net/search?key=vagrant&type=All&sort_by=search_api_relevance&sort_order=DESC



文件共享: 如何将宿主主机中的文件和虚拟机中的文件保持同步????

(1)配置共享文件: 

            在vagrantFile文件中,配置config.vm.synced_folder  "宿主主机目录", "虚拟机下的目录" ,  create:true ,owner:"root",group:"root"

如    config.vm.synced_folder  "E:\51tbk" ,  "/www/51tbk"

注意: create 参数代表的是  如果虚拟机下的目录不存在的话,就会自动创建;并把文件的拥有者owner和所属组group设置成root或者其他用户


网络设置: 

    vagrant支持三种网络模式: 公有(公网)网络、私有(局域)网络和端口转发。

(1)端口转发: 需要手动配置端口转发,将宿主主机的端口转发到虚拟机对应的端口上: 8080  - 》 80

        优点: 外网和宿主主机可以访问

        对应的配置项:

config.vm.network "forwarded_port", guest: 80, host: 8080

(2)私有网络: 为虚拟机分配一个ip地址,通过ip地址;宿主主机可以和虚拟机实现通信,虚拟机之间也可以实现通信;相当于一个小的局域网

            缺点是:外网无法访问;这里的外网指的是宿主主机以外的网络设备

对应的配置项是: 

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

(3)公网: 虚拟机享受实体机器一样的待遇,一样的网络配置,此时,虚拟机和宿主主机地位一样;都是局域网中的一份子;地位平齐。vagrant1.3版本之后也可以设定静态IP。设定语法如下:

config.vm.network "public_network", ip: "192.168.1.120"

公有网络中还可以设置桥接的网卡,语法如下

config.vm.network "public_network", :bridge => 'en1: Wi-Fi (AirPort)'

 

优点:

  • 方便团队协作,别人可以访问你的虚拟机


打包虚拟机,变成一个box系统文件: 

        vagrant   package     该指令会在当前目录下生成一个package.box文件

如何把这个生成的box文件添加到vagrant.d/boxs文件夹中???

        使用: vagrant  box  add    lph/cnetos(boxName)  package.box

       删除box: rm   package.box

使用打包的box :  vagrant init   lph/cnetos


注意 :  vagrant.d/boxs  文件中包含了很多个box,每个box都有自己的boxName,每个box里面都有一个系统镜像文件;我们通过boxName来区分;如  vagrant   init   boxName   // 我们使用boxName里面的系统镜像文件来创建虚拟机


A 、多主机的情况:  

    web服务器、数据库服务器、redis服务器、文件存储服务器等,这些虚拟机之前如何通信?如何启动多个虚拟机???


    (1)配置多个主机: 

                    config.vm.define "虚拟机名"  do | 虚拟机名|

                    end

                    

                config.vm.define "虚拟机名2"  do | 虚拟机名2 |

                    end

(启动: vagrant  up  [ 虚拟机名 ]     登录: vagrant   ssh   [ 虚拟机名 ])

    (2)虚拟主机通信,配置网络: 

                

config.vm.define "虚拟机名"  do | 虚拟机名 |

   虚拟机名.vm.network "private_network" , ip:"192.16.98.1"     //网段不能和宿主主机一样

虚拟机名.vm.hostname = "主机名"

虚拟机名.vm.synced_folder  "宿主主机目录" , “虚拟机目录”

                    end

                    

                config.vm.define "虚拟机名2"  do | 虚拟机名2 |

虚拟机名2.vm.network "private_network" , ip:"192.16.98.23"     //两台虚拟主机可以通信,网段相同

虚拟机名2.vm.hostname = "主机名2"

虚拟机名2.vm.synced_folder  "宿主主机目录" , “虚拟机目录”

                    end


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值