2011-03-27 72 views
0

问题1:Django:部署前

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

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

问题2:

不要我把这些文件准备部署到他们自己的版本控制库?我想优点是你可以轻松地回滚更改?

问题3:

难道我收集的文件之前,或在部署之前运行我的测试?

shell脚本可能是一个解决方案,但也许有更好的方法?我看着jenkins/hudson,但这看起来更像是一种位于我所寻找的工具之上的工具。

回答

2

对于问题1和2,我建议使用版本控制系统。我相信你已经在使用某种版本控制,所以你可以只说你想部署哪个版本库。是的,这使得回滚非常容易。可能最常用的Django部署方法是使用git打包文件,然后部署这些文件并使用fabric运行任何部署脚本。

使用Git,包装使用本地存储库看起来是这样的文件:

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

或者,你可以先把你变成一个GitHub的仓库,然后在部署脚本只是从克隆你的仓库您的生产服务器。

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

+0

那么部署它自己是没有问题的。我得到了一个测试版邀请,所以我只需要使用他们的api来推送我的项目。只是想知道如何得到一个我可以推动的清洁项目。没有源文件和本地设置文件等。 – Pickels 2011-03-27 22:20:33

+0

将项目的“干净”版本置于版本控制存储库的分支下是个不错的主意。您可以轻松指定您需要的文件以及不需要的文件。然后,您可以使用'git archive'将该分支打包并推送您的项目。如果你担心.pyc文件或类似的东西让你的项目看起来很乱,那么你可以设置你的仓库忽略.gitignore中的那些文件,所以这些类型的文件都不会进入仓库。 – Spike 2011-03-28 04:20:37

+0

以下是关于部署分支的更多信息:http://stackoverflow.com/questions/487753/how-to-realise-a-deployment-branch-in-git – Pickels 2011-03-28 10:50:51

1

我通常会使用光纤部署最Django的项目:

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

它具有与远程服务器通信的体面的API,这一切都在Python - 奖金!

您不需要将连结的媒体文件存储在单独的回购站中。它们只用于生产。在这种情况下,我发现像django-mediasync和django-compress这样的库很有用。它们都提供模板标签/设置,可根据DEBUG设置/环境(生产vs开发)连接并缓存您的静态文件。

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