【问题标题】:Django: pre-deploymentDjango:预部署
【发布时间】:2011-03-27 16:06:45
【问题描述】:

问题一:

我即将部署我的第一个 Django 网站,我想知道推荐哪些工具来收集所有 Django 文件。

例如,我不需要我的 sass 和 coffeescript 文件,我只需要编译后的 css 和 js 文件。我还想使用正确的生产设置文件。

问题 2:

我是否将这些文件准备好部署到他们自己的版本控制存储库中?我想优点是你可以轻松回滚更改?

问题 3:

我是在收集文件之前还是在部署之前运行测试?

Shell 脚本可能是一种解决方案,但也许有更好的方法?我查看了 jenkins/hudson,但这似乎更像是一种位于我正在寻找的工具之上的工具。

【问题讨论】:

    标签: django


    【解决方案1】:

    对于问题一和二,我建议为此使用版本控制系统。我确定您已经在使用某种版本控制,因此您只需说出您想要部署存储库的哪个分支。是的,这使得回滚非常容易。可能最流行的 Django 部署方法是使用 git 打包文件,然后使用 fabric 部署这些文件并运行任何部署脚本。

    使用 git,使用本地存储库打包文件如下所示:

    git archive --format=tar HEAD | gzip > my_repo.tar.gz
    

    或者,您可以先将更改推送到 github 存储库,然后在部署脚本中从生产服务器克隆您的存储库。

    对于您的第三个问题,如果您使用此版本控制方法来打包文件,那么只需确保在测试时已签出部署分支。

    【讨论】:

    • 自行部署没问题。我收到了 dotcould 的 beta 邀请,所以我只需要使用他们的 api 推送我的项目。只是想知道如何获得一个我可以推动的干净项目。没有源文件和本地设置文件等。
    • 将项目的“干净”版本放在版本控制存储库的分支下是个好主意。你可以很容易地指定你想要的文件和你不想要的文件。然后,您可以使用“git archive”打包该分支并推送您的项目。如果你担心 .pyc 文件或类似的东西会让你的项目看起来很混乱,你可以将你的存储库设置为忽略 .gitignore 中的那些文件,这样这些类型的文件都不会进入 repo。
    • 这里有更多关于部署分支的信息:stackoverflow.com/questions/487753/…
    【解决方案2】:

    我通常会使用 Fabric 来部署大多数 Django 项目:

    http://docs.fabfile.org/en/1.0.0/?redir

    它有一个不错的 api 用于与远程服务器进行通信,并且全部使用 Python - 奖励!

    您无需将连接的媒体文件存储在单独的存储库中。它们仅用于生产。在那种情况下,我发现 django-mediasync 和 django-compress 之类的库很有用。它们都提供模板标签/设置,可以根据DEBUG 设置/环境(生产与开发)为您连接和缓存您的静态文件。

    您可以随时运行测试。有些人会将它们作为版本控制钩子运行,以防止在部署期间检入损坏的代码,在测试失败时停止部署。

    【讨论】:

      猜你喜欢
      • 2010-09-23
      • 2015-01-31
      • 2012-08-27
      • 2021-07-02
      • 2015-02-21
      • 1970-01-01
      • 1970-01-01
      • 2015-01-24
      • 2019-08-14
      相关资源
      最近更新 更多