使用 vagrant 构建开发环境
TRANSCRIPT
使⽤用Vagrant
构建开发环境
2014年12⽉月29⽇日 严谨的PHP/Linux研讨会QQ群技术分享 blackpuppy QQ 20293543
内容Vagrant要解决的问题
Vagrant之道
Vagrant的组成元素
实例演⽰示
进⼀一步的思考 参考资料
Vagrant要解决的问题⼿手⼯工安装、配置各种软件,这包括:
操作系统:Linux(Ubuntu、CentOS等)、Windows(各种版本)
web服务器:Apache、Nginx等等
语⾔言:PHP/HHVM、Python、Ruby、Node.js等等
数据库:MySQL、MariaDB、PostgreSQL、Redis、Cassandra等等
其它⼯工具:RabbitMQ、Solr等等
Vagrant要解决的问题(续)
⽆无法重现问题
甲:你说的问题,怎么在我的机器上没事⼉儿啊?
⼄乙:可问题的确存在,不信你到我的机器上来看。
甲:那我的机器和你的环境哪⾥里不同呢?
Vagrant要解决的问题(续)
团队中没有统⼀一的⽅方法配置开发环境,保持相同的环境
同⼀一台机器上,要为参与的不同项⺫⽬目配置不同的环境
团队中不同的成员使⽤用的机器、操作系统不同
解决⽅方法 - Vagrant!
管理虚拟机
为团队构建⼀一致的环境
⾃自动化安装和配置的过程
隔离不同的项⺫⽬目,使⽤用各⾃自独⽴立的虚拟机
Vagrant之道签出代码,vagrant up,继续使⽤用熟悉的⼯工具
只需准备Vagrant的配置和相应脚本
随时 vagrant destroy,再 vagrant up
⽤用完就 vagrant suspend 或 vagrant halt
在团队之内、项⺫⽬目之间共享相同的⼯工作流程
避免“在我的机器上没有这个问题”的问题
Vagrant可以做什么
通过SSH登录虚拟机
关掉虚拟机
删除虚拟机(虚拟硬盘及其配置信息)
暂停、恢复虚拟机
打包、分发虚拟机
Vagrant的组成元素配置⽂文件Vagrantfile - 指明下列元素
provider(供应商) - 控制虚拟机
provision - 安装、配置虚拟机上的软件
box - 打包、分发虚拟机
插件 - 扩展功能,可以使⽤用Ruby⾃自⾏行开发
实例演⽰示
实例⼀一 最简单的Vagrant环境
实例⼆二 Python Sphinx⽂文档环境
实例三 LAMP开发环境
Vagrant的常⽤用命令vagrant up
vagrant suspend
vagrant halt
vagrant destroy
vagrant status
vagrant global-status
进⼀一步的思考使⽤用Docker,可以节省资源,极⼤大地缩短虚拟机的启动时间,也利于⽣生产环境的部署
打包、分发box
是否可以使⽤用Vagrant来配置Windows虚拟机?应该使⽤用什么样的provision?是否可以使⽤用PowerShell和DSC?
是否可以使⽤用Vagrant来配置Mac虚拟机?好像不能,也没必要
参考资料本次技术分享的详细内容 http://www.cnblogs.com/blackpuppy/p/vagrant_manage_development_environment.html
Vagrant官⺴⽹网 https://www.vagrantup.com/
Vagrant Getting Started https://docs.vagrantup.com/v2/getting-started/
Vagrant Documentation https://docs.vagrantup.com/v2/
Atlas (之前叫Vagrant Cloud) https://atlas.hashicorp.com
参考资料(续)
Vagrant: up and running, ISBN 978-1-449-33583-0 http://shop.oreilly.com/product/0636920026358.do
Hello Vagrant - ⻩黄博⽂文 http://www.cnblogs.com/huang0925/p/3349841.html
Docker与Vagrant之间的特点⽐比较 http://www.cnblogs.com/vikings-blog/p/3973265.html
问答讨论
希望抛砖引⽟玉! 谢谢您的参与! 再⻅见!