对于自动化python部署,我需要知道/学习什么?

对于自动化python部署,我需要知道/学习什么?,python,deployment,virtualenv,Python,Deployment,Virtualenv,我正在用Python启动一个新的webapp项目,以进入敏捷思维定势,我想在部署方面“正确”地做一些事情。然而,我发现整个virtualenv/fabric/zc.buildout/etc内容有点令人困惑——我习惯于将PHP文件FTP到服务器,然后将Web服务器指向它 部署后,服务器设置将如下所示: Nginx--代理-->WSGI Web服务器(生成)-->WSGI中间件-->WSGI应用程序(可能是MNML或类似版本) python Web服务器由supervisord管理 我应该研究什么样

我正在用Python启动一个新的webapp项目,以进入敏捷思维定势,我想在部署方面“正确”地做一些事情。然而,我发现整个virtualenv/fabric/zc.buildout/etc内容有点令人困惑——我习惯于将PHP文件FTP到服务器,然后将Web服务器指向它

部署后,服务器设置将如下所示:
Nginx--代理-->WSGI Web服务器(生成)-->WSGI中间件-->WSGI应用程序(可能是MNML或类似版本)

python Web服务器由supervisord管理


我应该研究什么样的部署设置/包/应用程序?我的应用程序是否需要遵循特定的目录结构来简化部署?

您的部署情况取决于您的应用程序。你在用Django吗?然后,这是一个很好的起点。然后,您可以使用
pip
virtualenv
git
fabric
搜索更多细节


实际上,
fabric
virtualenv
,以及所有其他工具的设计都是为了使您的部署更易于维护和自动化。最初,文档中的步骤可能就足够了。在您了解了工作原理后,您可以重新访问以改进您的流程。

我听说了以下方面的好消息:

Fabric是一个Python库和 命令行工具,用于 优化部署应用程序或 执行系统管理任务 通过SSH协议。它提供 运行任意shell的工具 命令(作为正常登录) 用户,或通过
sudo
),上传和 下载文件等等


你已经提到了构建,这就是你所需要的。例如,谷歌为不同的部分构建了一些框架。第一次设置需要一段时间,但是您也可以在不同的项目之间重用该设置


让supervisord启动一切,而不仅仅是python服务器。然后在重新启动时从cron或init.d启动supervisord。

我计划让supervisord管理所有与python相关的东西,然后让monitor supervisord、nginx、DB等进行监视。当然,这取决于您,但它们做的不是差不多吗?这还不够吗?(我不太清楚,我必须说。)有点,是的。主要的问题是,如果SuperverOrd因任何原因宕机,它会拿走它正在运行的所有东西,我很确定它无法监视和重新启动自己。所以,有一个监视器监视它是有意义的。