昨天晚上闲着没事,跑到Django的网上看了一下,居然正好发布了一个重要升级,对于0.95和0.96稳定版,还在svn trunk版,都有一个严重的拒绝服务漏洞(在开启了国际化和localMiddleware的双重前提下),很不幸的是,理财易正好符合这个条件,于是准备升级。官方的1.0始终不发布,每天十几甚至几十个bug fixed,还有新的改进,心想这次干脆直接升级到svn版得了,因为比起0.96已经过了四个多月了,功能上和性能上都有了相当大的改进。
于是在自己的开发机上下载了trunk里的django,安装上去,本地测试一下程序,没有问题,于是登录到理财易的服务器上,下载了trunk里面的django,安装,然后做了一件傻事,直接重启了理财易的服务,而不是测试环境的服务,结果,恶梦发生了,网站进不去了。于是赶紧切换到测试环境,显示500错误,一开始是提示我使用的那个DualSessionMiddleware加载错误,进入django的session部分一看,它的middleware发生了重大变化,SessionWrapper类不存在了!天哪。
赶快修改settings文件,切换回系统的Session模块,再打开,还是500错误,而且,根本不显示任何的错误信息了,只有一个IE自己的500错误。来到服务器上看errors.log,没有任何信息。马上下载回0.96.1,安装,重启,还是500。汗都要出来了。怀疑是不是没删除原来的直接安装的问题,于是来到Python的Lib目录,删光了django相关的文件,重新安装django trunk,重启,还是500错误。再删一次,重新安装0.96.1版本,再重启,哇,恢复了。
经过这惊魂10分钟,情绪稳定下来以后,来到网上查找相关的资料,没有任何地方提到1.0版把SessionWrapper搞到哪里去了。而我根据新的session middleware重新修改了那个DualSessionMiddleware类,结果还是500错误,不知道是哪里的问题。而我在开发机上的环境却一切良好,即使是使用1.0版的django。见鬼了。(服务器使用的是lighttpd+FastCGI,开发机上没有这个,只是使用manage.py runserver的临时服务器。)