ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[TOC] ### 注意事项 a)powershell Win7需要升级pwoershell 开启服务 Winodws Modules Installer 开启服务 Windows Upadte b)有遇到过安装了VirtualBox-5.0.22-108108-Win.exe的版本在win7下用不了,卸载重装[VirtualBox-4.3.12-93733-Win.exe](http://download.virtualbox.org/virtualbox/4.3.12/VirtualBox-4.3.12-93733-Win.exe)之后可用。 * * * * * ### 介绍 Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。 它的主要意义是让所有开发人员都使用和线上服务器一样的环境,本质上和你新建一个虚拟机。 那最常见的,正常我们是怎么开发呢,大部分童鞋应该是在windows下搭建开发环境,敲代码,运行程序,达到效果git或svn提交,发布linux环境再看效果。 而vagrant+virtualBox实现了把代码同步共享到linux虚拟机,而这个虚拟机你可以配成和你生产环境一样的, 说白了,通过共享文件到虚拟机,在类生产环境下运行。【让你在windows下体验到在linux开发的效果。】 还有一种共享方式,可以借助IDE的develop功能通过sftp上传到服务器,然后访问服务器 三种方式总结: 【1】原始windows开发模式:windows开发-本地访问调试(与生产环境毕竟不同)-发布到linux运行 【2】vagrant + virtualBox模式: windows开发 - 文件本地共享 -- 直接访问虚拟机(linux环境与生产一致) 【3】IDE+develop 模式: windows开发 - 文件远程上传 -- 访问远程开发机(linux环境与生产一致) 其实【1】,与【2,3】的区别就在于,程序是在哪里运行的,windows本地?or Linux仿生产环境 (能在仿生产的环境直接开发肯定比在windows开发在放到linux更好些,开发方便避免一些环境上等的麻烦) 【2】与【3】的区别就在于文件是如何同步的:【2】是通过虚拟机文件共享实现同步;【3】直接利用sftp远程上传实现同步。 缺点: 【1】毫无疑问,它的弊端就是开发时不能模拟生产环境,可能会有衔接问题,环境有了问题不像虚拟机重安一台立刻搞定。 【3】存在的问题,比如:当切换开发分支后改动了文件a和b,当前ide选中的是a文件,ok他会自动上传更新,但是b文件不会,因为窗口你没在b文件下呀,没有那么智能不会自动触发上传更新,这点就坑了造成代码不同步,需要你自己手动触发一下相关文件的上传,尤其是依赖一些包的时候会发生丢失,得全项目上传一次; 【2】因为是本地和虚拟机的文件共享嘛,没有文件上传遗漏一说,所以还是很推荐用 目录: 一。安装虚拟机 二。Vagrantfile配置文件详解 三。连接虚拟机 四。碰到问题 3.[box 下载地址](http://www.vagrantbox.es/) * * * * * [详细安装指令](https://www.jianshu.com/p/d3398b2e3f4f) ### 安装虚拟机 1.添加box ``` >vagrant box add base your_box_addres 注意:base是默认名称,主要用来标识一下你添加的box,后面的命令都是基于这个标识来操作的,你也可以用其他名称【但是用了其他名字记得在第二步用此名字init】 也可以使用 $ vagrant box add box地址 --name centos ``` 初始化 ``` $ vagrant init $ vagrant init box_name 如果你添加的box名称不是[base],那么需要在初始化的时候指定名称 vagrantfile设置 #config.vm.network "public_network", ip: "192.168.0.17" #创建一个bridge桥接网络,指定IP #config.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)" #创建一个bridge桥接网络,指定桥接适配器 config.vm.network "public_network" #创建一个bridge桥接网络,不指定桥接适配 如果是mac上的系统需要添加 `config.vm.network :public_network, :bridge => 'en1: Wi-Fi (AirPort)'` ``` 启动虚拟机 ``` $ vagrant up ``` 启动过程可能比较长,耐心等待,如果启动不成功,可能是`powershell`版本过低, 可能`power` 命令: ``` vagrant up (启动虚拟机) vagrant halt (关闭虚拟机——对应就是关机) vagrant suspend (暂停虚拟机——只是暂停,虚拟机内存等信息将以状态文件的方式保存在本地,可以执行恢复操作后继续使用) vagrant resume (恢复虚拟机—— 与前面的暂停相对应) vagrant destroy (删除虚拟机,删除后在当前虚拟机所做进行的除开Vagrantfile中的配置都不会保留) vagrant reload 修改了配置之后重启vagrant ``` 宿主机的文件没有映射到虚拟机的挂在目录 ``` 添加必须的插件 vagrant plugin install vagrant-vbguest Vagrant版本:2.1.1 Vagrant插件列表: vagrant-hostmanager(1.8.8) vagrant-hosts(2.8.1) vagrant-proxyconf(1.5.2) vagrant-reload(0.0.1) vagrant-share(1.1.9) vagrant-vbguest(0.15。 1) ``` root账号可以设置密码: ``` $ sudo passwd root ``` 没有ifconfig命令 ``` $ yum install net-tools ``` 宝塔 ``` 宝塔账号:admin1988 宝塔密码:Yf30301200 / admin1988 ``` ***** ### macos 安装vagrant 1.安装`brew` 2.用brew 安装 vitrualbox vagrant vagrant-manager ``` brew cask install virtualbox vagrant vagrant-manager ```