vagrant 使用笔记

需求:

在Windows中一键部署内网项目,项目是两个跑在Linux中的web server,要求启动虚拟机后web server 自动启动,并且通过访问本地IP加端口可以访问到web server, 最后打包方便日后一键部署


环境:

windows10  + virtual box + centos7 + vagrant

注:

centos7镜像为官网的centos7系统的.box文件,即 centos7.box


过程:

1.安装virtual box

2.安装vagrant

3.创建工作目录(myvagrant)

4.vagrant box add my_virtual_box_name(自定义) D:/vagrant/centos7.box(准备好的.box文件所在路径)

5.在工作目录 vagrant init my_virtual_box_name 会生成Vagrantfile配置文件

6.配置共享文件夹 config.vm.synced_folder "./vagrant_data", "/vagrant_data" 意思是本地当前vagrant_data目录映射到虚拟机/vagrant_data目录,在配置共享目录之前可以配置自动生成目录

    begin

        Dir.mkdir("./vagrant_data")

    rescue

        print("passing creating existed vagrant dir\n")

    end

6.做端口映射,在配置文件里修改 config.vm.network "forwarded_port", guest:8001, host:8001

7.两个web server 通过supervisor管理一键启动,Linux里面设置supervisor开机启动,但是可能是因为权限问题有一个web server起不来,所以在配置文件配置开机用sudo执行重加载命令

    config.vm.provision "shell", inline: <<-SHELL

        sudo supervisorctl reload

    SHELL

8.开启虚拟机,工作目录 vagrant up --provision

9.导出box文件方便下次一键部署,导出之前先关闭虚拟机 vagrant halt,到virtul box安装目录下执行 vboxmanage list vms 会展示已安装的虚拟机,虚拟机名称(花括号前面那一串)就是要导出的文件,到工作目录执行 vagrant package --base workspace_default_1539839845107_93161(这个是刚刚展示的虚拟机名称) --output mybox.box(你定义的别名)

10.导出过程中报错了,找了很久原因是磁盘满了,空间不够

推荐阅读更多精彩内容