【问题标题】:Good way to deploy django project to a testing sever?将 django 项目部署到测试服务器的好方法?
【发布时间】:2010-12-30 18:16:41
【问题描述】:

这是特定于我当前项目的。但也许答案会揭示一些更通用的解决方案。

情况如下:

  • 我在我的 Windows 机器上开发 django 项目
  • 我使用 SVN 提交到 SVN 存储库
  • 开发时我使用 django 自带的开发服务器
  • 有一个在其他地方运行的测试服务器 (apache),每次我完成某些事情时,我都需要通过 WinSCP/Putty 手动复制我的工作,并确保它在测试服务器上运行
  • 测试服务器可供我们的测试人员使用、测试和报告错误

我想自动化这个过程,因为它非常痛苦。它涉及我导出整个存储库,复制到测试服务器,摆脱 pyc 文件,有时重新启动 apache,使用正确的 settings.py(通常是一些重命名)。

我希望测试服务器在每次 SVN 提交后自动检索新文件。我可以编写一个自定义脚本来完成所有这些工作,但有些事情告诉我,我可以使用一些易于使用的解决方案来改变我的工作流程,从而减少痛苦。

一个额外的奖金。有一个设计器直接在测试服务器上处理模板上的 HTML/CSS。我需要检查他是否进行了更改,然后将它们传输到我的计算机,然后传输到 SVN 代表。我的老板认为给他SVN访问权限太危险了。有什么想法可以帮助我解决这个问题吗?

【问题讨论】:

    标签: django deployment workflow


    【解决方案1】:

    部署:

    我会说最好以与生产相同的方式进行部署。 Fabric 是good solution

    SVN方式:

    如果您想以 SVN 方式执行此操作,请创建一个名为 testing 的分支,一旦您拥有代码的工作版本并准备好进行测试,就将开发分支合并到测试分支。确保您拥有测试分支的权限,以限制所有人合并到测试分支。合并后,测试团队应该更新到特定版本。

    .pyc

    无需手动删除 pyc 文件,您可以添加一个 svn 钩子,它可以在提交时忽略 pyc 文件。创建文件 .svnignore

    *.pyc
    

    然后运行这个命令

    svn -R propset svn:ignore -F .svnignore .
    

    如果您已经陷入了对编译文件进行版本控制的混乱中,那么您可以执行以下任何一项操作。

    find -name "*.pyc" -exec svn revert {} \;
    find -name "*.pyc" -exec svn delete {} \;
    

    Django 设置文件

    可以设置环境变量,django通过该变量可以占用相应的设置文件。 Django set env

    设计师

    直接在测试服务器上工作的设计师不是加分项。 :) 很头疼。在理想的环境中,任何人都不应接触测试服务器中的代码。为设计人员创建一个单独的分支,或者他可以提交到所有开发人员都可以合并的 dev 分支。

    【讨论】:

      【解决方案2】:

      一种选择是创建一个只读的 svn 用户并让它检查 apache 服务器上的 svn 存储库。然后运行“svn update”进行构建。您可以通过执行“svn status”来检查设计器是否修改了文件。

      如果您的 svn 存储库与您的 qa django 实例位于同一台机器上,您可以使用 post-commit 钩子在每次提交后更新 svn,并在需要时退回 apache。见http://subversion.tigris.org/faq.html#website-auto-update

      【讨论】:

        猜你喜欢
        • 2015-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-16
        • 2016-11-12
        • 2015-10-20
        • 2023-03-25
        相关资源
        最近更新 更多