将文件从Dev移动到Live站点的最佳方法(django)

时间:2009-07-18 16:43:37

标签: svn deployment

我在本地有一个svn checkout我做了更改,一旦我提交它,我就进入服务器上更新我的开发副本。

我的问题是,将文件存入生产网站的最佳方法是什么。我对linux命令不太满意,但我想我可以创建一个脚本,将除.pyc和.svn文件之外的所有文件移到我的生产站点上?我真的不知道最好的方法是什么,我想听听一些专家如何以正确的方式做到这一点。

3 个答案:

答案 0 :(得分:7)

我通常直接从svn checkout运行。登录到生产服务器,更新到被认为有价值的修订或标记,重新启动服务器,你就可以了。

这样做的好处是它会强制您确保所有保持在版本控制之下,因为生产站点直接来自存储库。如果您愿意,您可以使用Fabric之类的内容自动部署。

答案 1 :(得分:3)

你不能在你的服务器上保留一个svn repo(可能是一个R / O)并在需要的时候让它svn up吗?通过这种方式,svn:ignore可以处理忽略某些文件的问题,& c。

如果这太麻烦了,我会在准备时打包一个“发布”(测试和协同工作的文件集)(也标记它以便在svn中轻松回滚) - 比如说.tar.bz2或.zip存档 - 并将其发送到扩展它的服务器。通过这种方式,您可以更好地跟踪您何时发布,并且可以更轻松地处理QA错误报告;如果你需要进入分支业务,它也将是一个救星。

更一般地说,release engineering是一个重要且经常被低估的学科,并且非常值得阅读它,即使现在你还不需要在该领域做任何复杂或高度结构化的事情。

答案 2 :(得分:1)

如果您不想运行自己的repo服务器并且愿意花一些时间学习mercurial或git,您可以在bitbucket或github上快速设置公共或私有存储库。

流程是:在本地提交,推送到在线仓库,登录到服务器,切换到项目并提取更改。一条经验法则是永远不要在服务器上编辑项目代码,始终在本地提交并推送,然后拉到服务器。 local_settings.py是我在服务器上直接编辑的唯一文件。

我使用pip需求文件来获取外部依赖项,就像输入'pip install --requirement external_apps.txt'一样简单,以保持依赖项同步。它还有助于使用virtualenv来管理多个项目(至少在本地)和结构部署脚本,以简化部署过程。

哦,并且所有VCS都有一个.ignore文件,您可以在其中阻止local_settings.py和* .pyc文件等文件出现在您的仓库中。