如何构建和部署Python Web应用程序
我有一个用Python写的网页应用,这个应用由几个Python包组成。请问把它构建和部署到服务器上最好的方法是什么呢?
目前,我是用Capistrano来部署这些包,然后用bash把包安装到一个虚拟环境中,再用puppet来配置服务器。不过我想找一个更基于Python的解决方案。
我稍微了解了一下zc.buildout,但我不太清楚我可以或者应该用它来做什么。
5 个回答
0
我使用Mercurial作为我的版本控制系统,同时也用它来部署项目。其实就是从另一个地方复制一份代码库,然后通过拉取(pull)、更新(update)或者获取(fetch)来让它保持最新。
我有好几个代码库的实例——一个在开发服务器上,一个(或者更多,视情况而定)在我的本地电脑上,一个在生产服务器上,还有一个“主”代码库,可以通过互联网访问(不过只能用SSH方式)。
唯一不自动做的就是如果数据库有变动,它不会自动更新,但我可以通过一些设置来实现这个功能。
1
Paver 是一个类似于 rake 或 make 的工具,用于 Python 编程。我不确定这是否是你想要的,不过我还没有找到类似于 Puppet 的 Python 工具...
2
这要看你的基础设施是什么样的。我们只是用Debian包和Buildbot来制作它们。
在其他环境中,我会使用Fabric脚本。至于文件格式,我用的是tbz2文件,不过我听说有些人直接使用egg文件进行部署。
我强烈建议你要有一个合适的构建流程,并使用BuildBot或Hudson来构建包,因为使用版本控制系统(SCM)会偏离目的,并且会鼓励一些不好的做法。