django部署成功
时间:2008-01-06 来源:MotsQueen
一、先介绍工作环境。
1、python2.5.1安装在d:\python25;
2、django svn版本;
3、工程父目录f:/srv/django; 在其目录下,f:\srv\django> django-admin.py startproject oldexam,生成工程oldexam;
4、选用wampserver套件提供apache和MySQL;安装在d:\wamp;
5、在apache站点上下载mod_python-3.3.1.win32-py2.5-Apache2.2.exe.注意下载对应python和apach的版本号。
二、工程已经使用django自带开发用服务器调试通过,现在要布置到apache生产环境中
我使用了apache的虚拟主机方式;用文本编辑器打开http.conf文件(apache的配置文件,在其中添加)
1、手工添加LoadModule python_module modules/mod_python.so;
2、因为要用到虚拟主机且其中的别名,所以反注释掉如下一行:
LoadModule vhost_alias_module modules/mod_vhost_alias.s
3、添加如下代码到http.conf中
<VirtualHost *:80> 'd:/python25/lib/site-packages',
'd:/python25/lib/site-packages/django/bin'] + sys.path"
PythonHandler django.core.handlers.modpython
</Location> |
PythonPath需要把工程父目录路径加入;
更详细的介绍参见网络上相关资料。没有使用网络上介绍的<Location "/mysite">,这样就不用每次访问url都为http://localhost/mysite;
2、Alias把路径路映射到具体目录,注意是绝对路径,且绝对路径的最右边都没有/闭合
可以理解为html页面中的href中的链接映射,不知道理解的对不对,欢迎指正;同时下面紧接着<Location "/site_media/">,注意这里是闭合的,并且SetHandler设为None,说明这些静态文件不需要使用django处理器来处理;
3、我设置到这里以后,可以访问http://localhost/admin/,但是没有加载样式表,为了能加载样式表,图标等,需要<LocationMatch> 匹配满足条件的url且声明不使用django处理器;这其中"\.(jpg|gif|png|txt|ico|pdf|css|jpeg)$" 是匹配表达式,具体意思为后缀名为.jpg,.gif, .png.....等静态文件都是满足匹配的,尤其是.css一定要有,我最开始按照网络教程来做的,没有这个,一直无法加载样式表,后来想到加上试试,成功了
4、oldexam.settings.py文件中有几个目录路径需要改为其实的绝对路径
MEDIA_ROOT = 'F:/srv/django/oldexam/media' ADMIN_MEDIA_PREFIX = 'D:/Python25/Lib/site-packages/django/contrib/admin/media/' TEMPLATE_DIRS = ('F:/srv/django/oldexam/templates',) |
成功访问后,apache的日志文件,其中还有几个错误,以后再研究
[Sun Jan 06 23:17:05 2008] [notice] Apache/2.2.4 (Win32) PHP/5.2.4 configured -- resuming normal operations
[Sun Jan 06 23:17:06 2008] [notice] Child 12876: Child process is running |
四,winxp上的WampServer启动问题
在winxp上安装wampserver经常遇到apache启动失败的问题,查apache日志,错误为
[Sun Nov 18 07:23:02 2007] [crit] (OS 10022)提供了一个无效的参数。 : Child 2980: setup_inherited_listeners(), WSASocket failed to open the inherited socket. |