您的设置,技巧,最重要的是您的工作流程是什么?
这些工具很棒但是仍然没有附加其使用的最佳实践,因此我不知道使用它们的最有效方法是什么。
--no-site-packages
?答案 0 :(得分:79)
“最佳做法”非常依赖于背景,所以我不会声称我的做法是最好的,只是因为它们适合我。我的工作主要是小型网站,所以没有多服务器部署,CDN等。我确实需要支持Webfaction共享主机部署,因为一些客户需要他们能找到的最便宜的主机。我经常需要在不同的环境中多次部署站点,因此可重复的脚本部署非常重要。
目前,新的部署分为以下几个步骤:
fab staging bootstrap
(服务器设置和初始代码部署)fab staging enable
(启用此站点的Apache / nginx配置)fab staging reload_server
(重新加载Apache / nginx配置)。当然可以将它们组合成一个命令行fab staging bootstrap enable reload_server
。
完成这些步骤后,使用新代码更新部署只是fab staging deploy
。
如果我需要回滚更新fab staging rollback
。回滚中没有什么特别神奇的东西;它只是将代码回滚到最后部署的版本并将数据库迁移到以前的状态(这需要记录一些关于部署后数据库迁移状态的元数据,我只是在文本文件中执行此操作)。
我几年没有使用过这个答案中描述的Fabric脚本,因此根本没有维护它们,我对它们的质量不承担责任:-)但是你可以在https://bitbucket.org/carljm/django-project-template看到它们 - 在repo根目录的fabfile.py
和deploy/
子目录中。
答案 1 :(得分:9)
我使用fabric来构建和部署我的代码,并假设已经为此设置了一个系统。我认为像puppet这样的工具更适合自动安装apache和mysql之类的东西,尽管我还没有真正将它包含在我的工作流程中。
另外,我通常每个项目都有不同的virtualenv。它们是从python的“基础”安装创建的 - 正如Carl指出的那样 - 你可以留下一些全局的python库。
因此,就工作流而言: