基于云的分布式部署开发环境方案
2012-10-08 18:40 知平软件 阅读(3120) 评论(2) 编辑 收藏 举报最近在参与开源的12306项目,考虑到整个开发团队都是分布在世界各地的 - 真有身在国外的同仁参与,要在这样广泛分布的团队里确保同样的开发环境,并且做到新人能快速配置好开发环境不是一件容易的事情。另外,如何快速将产品部署到云里面的机器上,也将会是一个麻烦的事情。
前一段时间刚好有个项目机会,是关于CHEF的,CHEF就是用来在云环境里快速部署程序所依赖的软件的。你可以把它等同于编译程序用的make、maven之类的工具,只不过CHEF是用来管理软件配置之间的依赖关系,而不仅仅是安装文件那么简单。比如说,要准备一个Java Web的开发环境,从裸机开始,需要安装Linux系统、安装JDK、安装Maven、安装apache、安装Mysql。为了让这些工具配合起来一起工作,需要做一些设置,例如设置Mysql的管理员密码,设置Java程序访问MySql的连接字符串,设置apache的端口号等等。很多管理依赖的工具都是基于自定义的DSL实现的,例如make程序需要写Makefile,Maven需要pom.xml。这种自定义DSL的方式最大的问题就是在开发阶段,配置文件写错了,排错非常困难,只能依赖make、maven这些工具自带的日志功能去排错。而CHEF使用的是另外一种途径,CHEF是使用ruby语言开发的,它使用的DSL也就是用ruby描述的,因此在配置出错时,可以使用与调试ruby一样的方式来排错,而且使用编程语言来写DSL的好处就是弹性足够大。
正好趁12306项目的机会,我用CHEF和Vagrant做了一个可以快速同步分发开发环境的工具,源码已经上传到github:
https://github.com/shiyimin/12306
这是使用说明:
- 下载并安装Virtual Box 4.2: https://www.virtualbox.org/wiki/Downloads
- 下载并安装Vagrant: http://vagrantup.com/
- 观看视频说明:http://v.youku.com/v_show/id_XNDU4NzA5MDA4.html
这里讲解视频说明里用到的命令:
- 首先整个开发环境使用的是ubuntu,为了保证整个开发环境一致,首先做了一个非常小的ubuntu虚拟机-大小是260M,这个虚拟机里只有最基本的内核和shell,没有安装任何工具。vagrant box add base http://files.vagrantup.com/lucid32.box,这个命令就是把虚拟机模板下载到本地,命名为“base”。
- 在github的源代码里,我写了一系列的配置工具,保存在“cookbooks”文件夹里,cookbooks文件夹里的每个文件夹包含了要安装的工具,以及安装这些工具的方法以及配置手段。可以看到,我在里面安装了apache2、apt、boost、jdk、maven、mysql等工具。
- 团队其它成员要准备开发程序时,无论他是否之前有开发环境,只需要将源代码同步下来,在宿主机的命令行里进入源代码的根目录,执行命令:vagrant up。
- 这时vagrant会调用chef,自动一步步安装cookbooks里每个文件夹对应的程序,并且配置它。
具体的代码会在后面的文章讲到,各位网友可以先把代码下载下来,并运行一下看看效果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!