一键部署
对于快速原型项目, 一键部署能提升开发者的效率
Google App Engine的appcfg.py就是被开发人员喜爱的工具, 只需一条命令就可以将当前开发环境的代码玩玩整整的克隆到服务器上.
不过, 一条命令部署不等于一键部署, 我们要努力让开发人员更加简单的搞定一切.
我们如何来实现更加简单的部署?
拿django开发来说, 由于自带开发服务器, 我们在项目下建立两个命令
server.bat和upload.bat 使用.bat扩展名的原因是为了兼容window开发人员
对于linux开发人员, 启动开发服务器只需要打开终端进入项目目录输入
OK. 那么拿django来说, server.bat的内容就是
而upload.bat的内容或许就是
重要的是约定, 团队成员在拿到每一个项目的源代码的时候, 都可以快速的启动项目的测试服务器, 无论项目采用的是什么框架, 或者采用什么样的方式部署到哪台服务器, 都可以让开发人员有机会忽略一定的细节, 省略重复劳动, 高效完成任务.
除了GAE的专用的工具支持一条命令部署以外, 大部分开发人员还在与ftp客户端一同工作. 切换到编辑器, 修改代码保存; 切换到浏览器, 观察效果; 切换到终端查看debug信息; 切换到Filezilla, 上传代码. Filezilla的图形化操作, 往往不能被写入到命令行中, 我们可以使用其他的方法:
在某些大型项目中, 常常使用的部署流程, 比如: 修改代码, svn checkin, code review, 最后在终端中ssh到服务器后svn checkout来部署. 这种方式融合了版本管理和服务器部署, 而且可以即时删除无用的代码. 这种方法, 我们可以将ssh的命令行写在upload.bat中
相对而言, 较小的项目通过rsync, 比起svn方式来更加简洁, 一条命令就可以实现. rsync需要服务器的支持, 不过不像我们想象的那样, 需要服务器上打开独立的tcp端口. rsync只需要ssh支持就可以工作.
最后, 当服务器不能安装rsync, 我们只能使用scp来覆盖服务器上的一切文件了.
Google App Engine的appcfg.py就是被开发人员喜爱的工具, 只需一条命令就可以将当前开发环境的代码玩玩整整的克隆到服务器上.
不过, 一条命令部署不等于一键部署, 我们要努力让开发人员更加简单的搞定一切.
我们如何来实现更加简单的部署?
拿django开发来说, 由于自带开发服务器, 我们在项目下建立两个命令
server.bat和upload.bat 使用.bat扩展名的原因是为了兼容window开发人员
对于linux开发人员, 启动开发服务器只需要打开终端进入项目目录输入
sh server.bat在部署的时候输入
sh upload.bat
OK. 那么拿django来说, server.bat的内容就是
python manage.py runserver
而upload.bat的内容或许就是
scp -R . user@myhost.com:/home/user/proj
重要的是约定, 团队成员在拿到每一个项目的源代码的时候, 都可以快速的启动项目的测试服务器, 无论项目采用的是什么框架, 或者采用什么样的方式部署到哪台服务器, 都可以让开发人员有机会忽略一定的细节, 省略重复劳动, 高效完成任务.
除了GAE的专用的工具支持一条命令部署以外, 大部分开发人员还在与ftp客户端一同工作. 切换到编辑器, 修改代码保存; 切换到浏览器, 观察效果; 切换到终端查看debug信息; 切换到Filezilla, 上传代码. Filezilla的图形化操作, 往往不能被写入到命令行中, 我们可以使用其他的方法:
在某些大型项目中, 常常使用的部署流程, 比如: 修改代码, svn checkin, code review, 最后在终端中ssh到服务器后svn checkout来部署. 这种方式融合了版本管理和服务器部署, 而且可以即时删除无用的代码. 这种方法, 我们可以将ssh的命令行写在upload.bat中
ssh user@myhost.com 'cd ~/proj/;svn up'
相对而言, 较小的项目通过rsync, 比起svn方式来更加简洁, 一条命令就可以实现. rsync需要服务器的支持, 不过不像我们想象的那样, 需要服务器上打开独立的tcp端口. rsync只需要ssh支持就可以工作.
rsync -avz . user@myhost.com:/home/user/project/ --exclude "*.pyc" --exclude ".*" --delete
最后, 当服务器不能安装rsync, 我们只能使用scp来覆盖服务器上的一切文件了.

feed
太复杂的工具真的不会用
另外在windows上cwRsync可真是个好东西, 集成了一个标准的 cygwin 环境以及 ssh, plink, 以及 rsync, 比装一个庞大的 cygwin 好很多.