gpt4 book ai didi

python - 你如何使用 pip、virtualenv 和 Fabric 来处理部署?

转载 作者:IT老高 更新时间:2023-10-28 21:39:56 29 4
gpt4 key购买 nike

您的设置、技巧,尤其是您的工作流程是什么?

这些工具很棒,但它们的使用仍然没有最佳实践,所以我不知道使用它们的最有效方法是什么。

  • 您使用 pip捆绑或总是下载?
  • 您是手动设置 Apache/Cherokee/MySQL 还是自己设置你有那个脚本吗?
  • 你把所有的东西都放在 virtualenv 里了吗?并使用 --no-site-packages?
  • 您是否将一个 virtualenv 用于多个项目?
  • 你用什么Fabric对于(哪一部分你的部署脚本)?
  • 您将 Fabric 脚本放在客户端还是服务器上?
  • 您如何处理数据库和媒体文件迁移?
  • 您是否需要诸如 SCons 之类的构建工具? ?
  • 您的部署步骤是什么?您多久执行一次?
  • 等等

最佳答案

“最佳实践”非常依赖于上下文,所以我不会声称我的实践是最好的,只是它们对我有用。我主要在小型站 pip 上工作,因此没有多服务器部署、CDN 等。我确实需要支持 Webfaction 共享托管部署,因为有些客户需要他们能找到的最便宜的托管。我确实经常需要在不同的环境中多次部署站 pip ,因此可重复的脚本部署至关重要。

  • 我不使用 pip 包,我从 requirements.txt 安装。我自己经营chishop服务器具有我需要的所有内容的 sdists,因此在构建过程中没有多个单 pip 故障。我还在我的开发机器上使用 PIP_DOWNLOAD_CACHE 来加速引导项目环境,因为我的大多数项目的需求重叠很多。
  • 我有 Fabric可以在 Ubuntu VPS 上自动设置和配置 nginx + Apache/mod_wsgi 的脚本,或在 Webfaction 上配置等效的脚本共享主机,然后部署项目。
  • 我不将 --no-site-packages 与 virtualenv 一起使用,因为我更喜欢在系统级别安装缓慢移动的编译包(Python Imaging Library、psycopg2);在每个 virtualenv 中都做得太慢和麻烦。我没有遇到污染系统站 pip 包的问题,​​因为我通常不会污染它。在任何情况下,您都可以在 virtualenv 中安装不同版本的东西,它会优先。
  • 每个项目都有自己的 virtualenv。我有一些 bash 脚本(不是 virtualenvwrapper,虽然很多人都使用它并且喜欢它),它们可以自动将给定项目的 virtualenv 部署到已知位置并将该项目的要求安装到其中。
  • 整个部署过程,从裸机 Ubuntu 服务器 VPS 或 Webfaction 共享主机帐户到正在运行的网站,均使用 Fabric 编写脚本。
  • Fabric 脚本是项目源代码树的一部分,我从本地开发结帐中运行它们。
  • 我不需要 SCons(我知道)。

部署

目前,新的部署分为以下步骤:

  • fab staging bootstrap(服务器设置和初始代码部署)
  • fab staging enable(为此站 pip 启用 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.pydeploy/ 子目录中。

关于python - 你如何使用 pip、virtualenv 和 Fabric 来处理部署?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2441704/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com