你的设置、你的技巧是什么,最重要的是你的工作流程是什么?

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

  • 你用吗 捆绑包还是总是下载?
  • 您是手工设置Apache/Cherokee/MySQL还是为此脚本设置?
  • 你把所有东西都放进去吗 虚拟环境 并使用 --no-site-packages?
  • 您是否将一个 virtualenv 用于多个项目?
  • 你用什么 织物 对于(您的部署的哪一部分脚本)?
  • 您将 Fabric 脚本放在客户端还是服务器上?
  • 您如何处理数据库和媒体文件迁移?
  • 您是否需要一个构建工具,例如 SCons?
  • 你们的部署步骤是什么?您多久执行一次这些操作?
  • ETC。
有帮助吗?

解决方案

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

  • 我不使用 pip 捆绑包,我从requirements.txt 安装。我自己经营 奇肖普 服务器包含我需要的所有内容,因此构建过程中不会出现多个单点故障。我还在我的开发计算机上使用 PIP_DOWNLOAD_CACHE 来加速引导项目环境,因为我的大多数项目的需求有相当多的重叠。
  • 我有 织物 可以在 Ubuntu VPS 上自动设置和配置 nginx + Apache/mod_wsgi 的脚本,或在 网派 共享托管,然后部署项目。
  • 我不将 --no-site-packages 与 virtualenv 一起使用,因为我更喜欢在系统级别安装缓慢移动的编译包(Python 成像库、psycopg2);在每个 virtualenv 中执行起来太慢且麻烦。我没有遇到污染系统站点包的问题,​​因为我通常不会污染它。无论如何,您可以在 virtualenv 中安装不同版本的东西,它将优先。
  • 每个项目都有自己的 virtualenv。我有一些 bash 脚本(不是 虚拟环境包装器, (尽管很多人使用它并且喜欢它)自动将给定项目的 virtualenv 部署到已知位置并将该项目的需求安装到其中。
  • 从裸 Ubuntu 服务器 VPS 或 Webfaction 共享托管帐户到正在运行的网站的整个部署过程都是使用 Fabric 编写的。
  • Fabric 脚本是项目源代码树的一部分,我从本地开发结帐运行它们。
  • 我不需要 SCons(据我所知)。

部署

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

  • 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 - 在 fabfile.py 在 repo 根目录中,以及 deploy/ 子目录。

其他提示

我使用 Fabric 来构建和部署我的代码,并假设已经为此设置了系统。我认为像这样的工具 木偶 更适合自动安装 apache 和 mysql 之类的东西,尽管我还没有真正将它包含在我的工作流程中。

另外,我通常每个项目都有不同的 virtualenv。它们是从 python 的“基本”安装创建的,正如 Carl 指出的那样,您可以保留一些全局 python 库。

因此,就工作流程而言,将是:

  1. puppet 安装所需的服务(Web 服务器、数据库、ssh 服务器...)
  2. puppet 设置所需的用户和基本文件夹
  3. Fabric 为应用程序创建 virtualenv
  4. 从requirements.txt 进行fabric 到pip install
  5. Fabric 来部署您的应用程序
  6. Fabric 部署配置文件(Web 服务器,...)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top