自动化Python部署我需要了解/学习什么?
我正在开始一个新的Python网页应用项目,想要学习敏捷开发的思维方式,并希望在部署方面做得“正确”。不过,我发现虚拟环境、fabric、zc.buildout等这些东西有点复杂——我以前只是把PHP文件通过FTP传到服务器上,然后让网页服务器指向它。
部署后,服务器的设置大概是这样的:
Nginx --proxy-to--> WSGI Webserver (Spawning) --> WSGI Middleware --> WSGI App (可能是MNML或类似的)
其中,Python网页服务器是由supervisord来管理的。
我应该关注哪些部署的设置、包或应用呢?我的应用是否需要遵循特定的目录结构,以便于部署?
3 个回答
我听说过很多关于 Fabric 的好评:
Fabric 是一个用 Python 写的库和命令行工具,主要目的是让应用程序的部署和系统管理变得更简单,特别是通过 SSH 协议来操作。它提供了一些工具,可以用来运行各种命令(可以是普通用户登录,也可以用
sudo
提升权限),还可以用来上传和下载文件等等。
你的应用程序的部署方式取决于你使用的框架。如果你在用Django,那么可以参考Apache + mod_wsgi
的部署文档,这是一个不错的起点。之后你可以在网上搜索更多的细节,比如这篇两部分的系列文章,里面讲了如何使用pip
、virtualenv
、git
和fabric
。
其实,fabric
、virtualenv
以及其他这些工具都是为了让你更容易管理和自动化部署过程。一开始,文档里的步骤应该就足够了。在你熟悉了这些操作之后,可以再回过头来优化你的流程。
你已经提到过buildout,这就是你需要的全部。可以在网上搜索一下不同部分的buildout示例。第一次设置可能需要花一些时间,但之后你可以在不同的项目中重复使用这个设置。
让supervisord来启动所有东西,而不仅仅是python服务器。然后在系统重启时,通过cron或者init.d来启动supervisord。