将django项目部署到测试服务器的好方法?

将django项目部署到测试服务器的好方法?,django,deployment,workflow,Django,Deployment,Workflow,这是我当前项目特有的。但也许答案会揭示一些更通用的解决方案 情况如下: 我在Windows box上开发django项目 我使用SVN提交到SVN存储库 在开发过程中,我使用django附带的开发服务器 有一个测试服务器(apache)在其他地方运行,每次我完成一些事情时,我都需要通过WinSCP/Putty手动复制我的工作,并确保它在测试服务器上工作 测试服务器可供我们的测试人员使用、测试和报告错误 我想自动化这个过程,因为这是非常痛苦的。我需要导出整个存储库,复制到测试服务器,删除pyc

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

情况如下:

  • 我在Windows box上开发django项目
  • 我使用SVN提交到SVN存储库
  • 在开发过程中,我使用django附带的开发服务器
  • 有一个测试服务器(apache)在其他地方运行,每次我完成一些事情时,我都需要通过WinSCP/Putty手动复制我的工作,并确保它在测试服务器上工作
  • 测试服务器可供我们的测试人员使用、测试和报告错误
我想自动化这个过程,因为这是非常痛苦的。我需要导出整个存储库,复制到测试服务器,删除pyc文件,有时重新启动apache,使用正确的settings.py(通常是重命名)

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


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

一个选项是创建一个只读svn用户,并让它在apache服务器上签出svn存储库。然后运行“svn更新”进行构建。您可以通过执行“svn状态”检查设计器是否修改了文件


如果您的svn存储库与qa django实例位于同一台机器上,则可以使用提交后钩子在每次提交后对其进行svn更新,并在需要时跳出apache。请参见部署:

我想说的是,以与生产相同的方式进行部署更好。织物是一种特殊的材料

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可以通过该变量使用相应的设置文件

设计师

直接在测试服务器上工作的well designer不是一个额外的优点。:)这让人头痛。在理想的环境中,任何人都不应该接触测试服务器中的代码。为设计人员创建一个单独的分支,或者他可以提交给所有开发人员都可以合并的dev分支