如何在Windows上运行Django并处理Apache没有守护程序模式的问题? 这个问题的演变
这开始是为了寻找在Linux上运行Django、通过Django PyODBC访问SQL Server以及在Windows上运行Django的安装中同样出色地支持Unicode的其他建议 未能在Linux中为ODBC驱动程序提供与Windows ODBC驱动程序相同级别的Unicode支持的良好解决方案;这个问题演变为应对Windows中没有Apache守护程序模式的负面影响 问题 如果在Windows上运行Apache+mod_wsgi,则每次部署新的Django代码时,都需要重新启动Apache服务器。有关原因的详细信息,请参阅 当您可能需要重新启动Apache时,如何运行一组可靠的应用程序和服务,直到Apache完全重新启动才拒绝服务 问题 我们使用SQL Server 2005,需要支持unicode字符和Microsoft Office应用程序中生成的某些字符(如) 在SQLServer2005上运行Django需要使用Django-PyODBC。它在Windows/Linux/Mac OS X上运行良好;但是,如果您需要unicode支持,那么在Linux/Mac OS X上就不走运了-Unix中SQL Server的ODBC驱动程序正处于unicode遵从性的不同阶段,如果指定UTF-8(*)的客户端字符编码,则开源驱动程序适用于某些字符;但不支持所有字符 在我们的测试中,在Windows 2003上运行Django并使用Microsoft ODBC驱动程序,允许我们正确插入/更新/选择几种不同语言中的任何字符,以及Office应用程序中的Microsoft智能字符 但在Windows上运行意味着每次我们部署新代码时都需要跳转Apache,这意味着几秒钟内没有服务如何在Windows上运行Django并处理Apache没有守护程序模式的问题? 这个问题的演变,django,sql-server-2005,unicode,freetds,django-pyodbc,Django,Sql Server 2005,Unicode,Freetds,Django Pyodbc,这开始是为了寻找在Linux上运行Django、通过Django PyODBC访问SQL Server以及在Windows上运行Django的安装中同样出色地支持Unicode的其他建议 未能在Linux中为ODBC驱动程序提供与Windows ODBC驱动程序相同级别的Unicode支持的良好解决方案;这个问题演变为应对Windows中没有Apache守护程序模式的负面影响 问题 如果在Windows上运行Apache+mod_wsgi,则每次部署新的Django代码时,都需要重新启动Apac
(*)坦白地说,我们能够让某些字符被FreeTDS接受的唯一方法是在FreeTDS.conf中添加一个
客户端字符集
条目:
[a_db_server]
host = a_db_server
port = 1433
tds version = 8.0
client charset = UTF-8
关于使用Apache/mod_wsgi时在Windows上重新加载,请阅读我对以下内容的回复:
接受自己的答案可能不是一种好的形式,但它适合我们的情况,也可能帮助他人
首先也是最重要的一点:我们放弃了寻找一个ODBC驱动程序,该驱动程序可以与PyODBC一起正常工作,并且可以像Microsoft原生ODBC驱动程序一样支持unicode。FreeTDS部分起作用,一些商业司机在我们的测试中没有做到这一点。我们考虑过ODBC-JDBC桥,但从未真正测试过它 我们还考虑过使用,但考虑到多用户解决方案的价格、更复杂的可能性以及Django应用程序的低负载情况;我们决定坚持在Windows上运行Django,并尝试在每次部署新版本的Django应用程序时重新启动Apache服务器 我们如何应对Apache重启并仍然提供服务可用性:
- 我们在一个由两台运行在Windows上的Apache服务器组成的集群上部署了一个
- 在集群中的每个Windows Apache服务器上,我们都运行着所有Django应用程序
- 当必须将新代码部署到服务器时,我们:
- 通过Apache的balancer manager界面禁用群集中的一台服务器
- 应用更新并在已禁用的服务器中安装任何新的Django应用程序
- 在禁用的服务器中测试修改
- 通过Apache的balancer manager接口重新启用集群中的服务器
- 对第二台服务器执行相同的步骤
代理Apache服务器重写所有重定向和cookie响应头,因此只要人们通过代理访问服务,Django代码中就不需要任何修改。谢谢Graham。这正是我所想的。