我正在用Python开始一个新的webapp项目,以进入敏捷思维模式,我想在部署方面“正确”地做事。但是,我发现整个virtualenv / fabric / zc.buildout / etc的东西有点令人困惑 - 我习惯于将PHP文件FTP到服务器并将Web服务器指向它。
部署后,服务器设置如下所示:
Nginx --proxy-to--> WSGI Webserver (Spawning) --> WSGI Middleware --> WSGI App (probably MNML or similar)
python webserver由supervisord管理。
我应该研究哪种部署设置/软件包/应用程序?是否有一个特定的目录结构我需要坚持使用我的应用程序来简化部署?
答案 0 :(得分:4)
您的部署故事取决于您的应用。你在用Django吗?那么Apache + mod_wsgi
deployment docs就是一个很好的起点。然后,您可以使用pip
,virtualenv
,git
和fabric
来搜索更多详细信息,例如此2-part series。
实际上,fabric
,virtualenv
以及所有其他工具旨在使维护和自动化部署变得更加容易。最初,文档中的步骤可能就足够了。在了解了工作原理后,您可以重新审视以改进流程。
答案 1 :(得分:2)
我听说过有关Fabric的好消息:
Fabric是一个Python库和 命令行工具旨在 简化部署应用程序或 执行系统管理任务 通过SSH协议。它提供 用于运行任意shell的工具 命令(作为普通登录 用户,或通过
sudo
),上传和 下载文件,等等。
答案 2 :(得分:2)
您已经提到过buildout,这就是您所需要的一切。例如,Google针对不同部分进行了扩建。需要一段时间才能在第一时间进行设置,但是您也可以在不同项目之间重复使用设置。
让supervisord开始一切,而不仅仅是python服务器。然后在重新启动时从fron cron或init.d启动supervisord。