如何安全地从Django 1.0.2升级到1.3.1?

时间:2011-11-17 21:05:11

标签: django upgrade production-environment migrate

以下是否有效:

  1. 取消安装django 1.0.2
  2. 安装django 1.3.1
  3. 启动一个与旧项目同名的“新”项目。
  4. 手动导入我的所有旧应用等。
  5. 我的手指交叉,我没有杀死任何东西。
  6. 据推测,版本之间存在一些显着差异,那么它会起作用吗? ..并且有一种不那么痛苦(安全)的方法吗?

3 个答案:

答案 0 :(得分:4)

事情很可能会破裂 - 自从过去的1.0天以来,Django已经发生了很多(好的!)变化。您的第一步可能应该是阅读升级路径中每个主要版本Django的发行说明(特别是“向后不兼容的更改”部分),以了解发生了哪些更改以及您需要更改的内容。 / p>

您还需要先计划在开发中进行升级(而不是生产!) - 您几乎肯定需要在很多地方更新您的项目,因此您需要离线执行此操作然后移动完成测试后,将更新的代码投入生产。

发行说明:

https://docs.djangoproject.com/en/dev/releases/1.1/

https://docs.djangoproject.com/en/dev/releases/1.2/

https://docs.djangoproject.com/en/dev/releases/1.3/

答案 1 :(得分:1)

首先,您首先应该在开发环境中执行此过程。如果需要,创建生产数据库的转储,并将其导入开发数据库。

“取消安装”Django是不必要的。我建议只需将site-packages目录中的django文件夹重命名为django_old,然后安装新版本的Django。

使用runserver启动您的开发环境,看看会发生什么。运行测试套件以确保您使用的应用和第三方应用没有任何重大问题。

如果一切正常,您可以在生产机器上重复此过程。老实说,你真的不应该有很多问题。 Django很少弃用任何东西,当它们这样做时,在它实际停止运行之前,总会有多个版本的弃用警告。尽快纠正您获得的任何弃用警告。

答案 2 :(得分:1)

  

有一种不那么痛苦(安全)的方法吗?

是。 始终使用virtualenv 所有您的[新]广告系列 从此开始。 :)

然后,让新实例的暂存版本运行并使用不同版本的Django(也可能是其他python库的更新版本)也没什么大不了的。

您可以保持旧版本的运行,直到您确定已准备好执行升级。

显然,您需要确保在测试时将新版本指向不同的数据库并在不同的端口上运行。除此之外它应该是美好而简单的。

正如迈克尔所说,你几乎绝对发现你需要从1.0-> 1.3进行一些更改,并且你想要在开发环境中解决这些问题首先考虑一下你的生产升级。

一些有用的指示: