【发布时间】:2011-12-31 17:41:12
【问题描述】:
以下工作是否有效:
- 卸载 django 1.0.2
- 安装 django 1.3.1
- 开始一个与旧项目同名的“新”项目。
- 手动导入我所有的旧应用等。
- 交叉手指,我没有杀过任何东西。
可能版本之间存在一些显着差异,那么这会起作用吗? ..有没有一种不那么痛苦(安全)的方法来做到这一点?
【问题讨论】:
标签: django upgrade production-environment migrate
以下工作是否有效:
可能版本之间存在一些显着差异,那么这会起作用吗? ..有没有一种不那么痛苦(安全)的方法来做到这一点?
【问题讨论】:
标签: django upgrade production-environment migrate
事情很可能会崩溃——自从旧的 1.0 时代以来,Django 已经发生了很多(好!)的变化。您的第一步可能真的应该是阅读升级路径中每个主要版本的 Django 的发行说明(特别是“向后不兼容的更改”部分),以了解发生了哪些更改以及您需要更改的内容。
您还需要首先计划在开发(而不是生产!)中进行升级——您几乎可以肯定需要在很多地方更新您的项目,因此您需要离线执行此操作,然后再迁移完成测试后将更新的代码投入生产。
发行说明:
https://docs.djangoproject.com/en/dev/releases/1.1/
【讨论】:
首先,您绝对应该首先在开发环境中执行此过程。如果需要,创建生产数据库的转储,然后将其导入开发数据库。
“卸载”Django 是不必要的。我建议只需将站点包目录中的 django 文件夹重命名为 django_old 之类的名称,然后安装新版本的 Django。
使用runserver 启动您的开发环境,看看会发生什么。运行测试套件以确保您的应用和您使用的第三方应用没有任何重大问题。
如果一切正常,您可以在生产机器上重复该过程。不过,老实说,你真的不应该有很多问题。 Django 很少弃用任何东西,当他们这样做时,在它实际停止运行之前,总会有多个版本的弃用警告。不过,请尽快更正您收到的任何弃用警告。
【讨论】:
有没有一种不那么痛苦(安全)的方法来做到这一点?
是的。 始终使用virtualenv所有您的[新]生产部署,从这个开始。 :)
然后,让新实例的暂存版本启动并使用不同版本的 Django(可能还有其他 python 库的更新版本)运行并没有什么大不了的。
您可以保持旧版本正常运行,直到您确定已准备好执行升级。
显然,您需要确保在测试时将新版本指向不同的数据库并在不同的端口上运行。除此之外,它应该是好的和简单的。
正如 Michael 所说,您几乎肯定会发现您需要从 1.0->1.3 进行一些更改,并且您需要首先在开发环境中解决这些问题在考虑您的生产升级之前。
几个有用的指针:
【讨论】: