由于Django自带轻量级的server,因此在前篇博文中,默认使用该server,但实际生产中是不允许这么干的,生产环境中通常使用Apache Httpd Server结合mod_wsgi.so来做后端服务器。
以下部署环境为:Python2.7.6
1、安装httpd-2.2.25-win32-x86-no_ssl.msi
2、将下载好的mod_wsgi.so 放在 D:Program FilesApache Software FoundationApache2.2modules 模块下。
3、在新建的web工程 MyDjangoProject目录下新建 django.wsgi文件
内容如下(相应的目录需要修改):
1 2 import os 3 import sys 4 5 djangopath = "D:/Python27/Lib/site-packages/django/bin" 6 if djangopath not in sys.path: 7 sys.path.append(djangopath) 8 9 projectpath = 'D:/workspace/MyDjangoProject' 10 if projectpath not in sys.path: 11 sys.path.append(projectpath) 12 13 apppath = 'D:/workspace/MyDjangoProject/MyDjangoProject' 14 if apppath not in sys.path: 15 sys.path.append(apppath) 16 os.environ['DJANGO_SETTINGS_MODULE']='MyDjangoProject.settings' 17 18 from django.core.wsgi import get_wsgi_application 19 application = get_wsgi_application()
4、修改httpd.conf ,添加如下:
1 LoadModule wsgi_module modules/mod_wsgi.so 2 WSGIScriptAlias / "D:/workspace/MyDjangoProject/django.wsgi" 3 <Directory "D:/workspace/MyDjangoProject/"> 4 Options FollowSymLinks 5 AllowOverride None 6 Order deny,allow 7 Allow from all 8 </Directory>
ok,重启server,页面正常了。
在部署的过程中,遇到一个异常,如下:
1 The translation infrastructure cannot be initialized before the apps registry is ready
原因是django.wsgi一开始按照较为古老的写法,改为新版本的写法就Ok了。