本站首页    管理页面    写新日志    退出


«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7633291
建立时间:2006年5月29日




[Django]Windows下Django配置Apache示范设置
软件技术

lhwork 发表于 2007/2/3 11:40:40

[常见错误现象1] 关键词:      client denied by server configuration。 表象:          访问了http://localhost:80/mysite/ 后,假如发现图片没有加载,或者css没有应用上,并且httpd.conf文件中Location的配置绝对路径肯定没错。   解释:          第一,   首先检查httpd.conf配置Alias的配置, 看看Alias设置的路径是否正确, Alias /site_media c:/django/myproject/media 请保证您附加的这个路径肯定是你的图片或者css存放的路径。 其次,请检查您的django项目myproject目录下的settings.py,保证MEDIA_ROOT、STATIC_PATH、TEMPLATE_DIRS这三个参数指向的绝对路径正确无误。 最后,如果上面的参数都没错,却还是不行。那么请您检查Apache的日志文件 Apache2.2\logs\error.log 如果您发现有这样的错误提示: 错误日志 [Mon Nov 20 17:27:08 2006] [notice] Child 4172: Starting thread to listen on port 80. [Mon Nov 20 17:27:08 2006] [error] [client 127.0.0.1] client denied by server configuration: c:/Django/myproject/media/css/global.css, referer: http://localhost:80/mysite/ 那么说明是因为对这些资源文件的访问被拒绝了。 此时,请您浏览 http://localhost:80/site_media/css/global.css ,如果遇到了HTTP 403错误,就说明是权限问题。 此时,请到httpd.conf,增加如下配置来允许静态资源文件夹被访问: 增加的配置行 # 对需要访问的区域,可以增加正确的Directory块 # 否则会得到这样的错误:client denied by server configuration: c:/Django/myproject/media/css/global.css, referer: http:/ /localhost:80/mysite/ <Directory "c:/Django/myproject/media/"> Order Deny,Allow Allow from all </Directory> 重启Apache服务。   [常见错误现象2] 关键词:      EnvironmentError: Could not import settings。 表象:          访问了http://localhost:80/mysite/ 后,直接页面报告如下错误: 页面错误输出 1.     Mod_python error: “PythonHandler django.core.handlers.modpython” Traceback (most recent call last): File “C:\Python24\Lib\site-packages\mod_python\apache.py”, line 299, in HandlerDispatchresult = object(req) File “c:\django_src\django\core\handlers\modpython.py”, line 163, in handlerreturn ModPythonHandler()(req) File “c:\django_src\django\core\handlers\modpython.py”, line 125, in __call__if settings.ENABLE_PSYCO: File “c:\django_src\django\conf\__init__.py”, line 27, in __getattr__self._import_settings() File “c:\django_src\django\conf\__init__.py”, line 54, in _import_settingsself._target = Settings(settings_module) File “c:\django_src\django\conf\__init__.py”, line 82, in __init__raise EnvironmentError, “Could not import settings ‘%s’ (Is it on sys.path? Does it have syntax errors?): %s” % (self.SETTINGS_MODULE, e) EnvironmentError: Could not import settings ‘myproject.settings’ (Is it on sys.path? Does it have syntax errors?): No module named myproject.settings   这是开始配置django+apache最容易遇到的问题,:D。   解释: 这是因为apache在系统目录下找不到myproject/settings.py文件。 首先检查PythonPath设置的路径是否正确: PythonPath "sys.path+['c:/django']" 注意,这个'c:/django'路径实际是我们的项目路径c:/django/myproject的上一级目录!不要写错了。 增加的配置行 #  mysite目录路径: c:/django/myproject, # 但是对于PythonPath,必须设置成这个目录的上一级目录! # this site url:http://localhost:80/mysite/ <Location "/mysite/">     SetHandler python-program     PythonPath "sys.path+['c:/django']"     PythonHandler django.core.handlers.modpython        SetEnv DJANGO_SETTINGS_MODULE myproject.settings     PythonInterpreter mysite     PythonDebug On </Location>   配置Django到Apache的步骤: 如何在Windows环境下安装Apache和mod_Python, 这篇Blog解释得很明白,我下面的这些步骤得到了验证。 1: 从 http://httpd.apache.org/ 来获取apache_2.2.3-win32-x86-no_ssl.msi这个安装文件; 运行这个msi即可顺利安装Apache。 2: 网络上有很多说可以利用Apache和mod_python源代码来编译安装mod_python的,但是如果你仅仅想快速安装,那么请从 http://www.apache.org/dist/httpd/modpython/win/3.2.10/ 直接下载 mod_python-3.2.10.win32-py2.4-apache2.2.exe 文件,运行这个exe即可顺利把mod_python安装到Python2.4以及Apache2.2; 由于GFW的封锁,可能您无法访问apache网站,那么可以从这里下载: http://www.cnblogs.com/Files/zhengyun_ustc/mod_python-3.2.10.win32-py2.4-apache2.2.rar 3: 我们用 Python django-admin.py startproject myproject 命令,在C盘的django目录下创建了一个Django项目myproject。我们把它引用的图片文件和css文件等静态资源都放在myproject文件夹下的media目录中。 此时,将myproject目录下的settings.py文件中的这三个参数修改一下,主要是为了从相对路径变成绝对路径: 修改的配置行 # Django settings for myproject project. ''' 将相对路径改为绝对路径。主要有: MEDIA_ROOT TEMPLATE_DIRS STATIC_PATH ''' # Absolute path to the directory that holds media. # Example: "/home/media/media.lawrence.com/" MEDIA_ROOT = 'c:/django/myproject' STATIC_PATH = 'c:/django/myproject/media' TEMPLATE_DIRS = (     # Put strings here, like "/home/html/django_templates".     # Always use forward slashes, even on Windows.     'c:/django/myproject/templates', ) 切记切记,一定要保证这三个参数是绝对路径。 4: 配置Apache的httpd.conf配置文件: 首先,在“Dynamic Shared Object (DSO) Support”的配置下增加一行 LoadModule python_module modules/mod_python.so 这个必须手动添加。 5: 我们列出此时Apache所需要的参数分别为: 项目名:myporject 试图访问的URL为:http://localhost:80/mysite/ 静态资源文件的存放目录:c:/django/myproject/media 项目文件夹路径:c:/django/myproject 好了,此时你就应该在httpd.conf文件的最后附加这段配置,以便让Apache知道到哪里去定位myproject/settings.py文件: 增加的配置行 #  mysite目录路径: c:/django/myproject, # 但是对于PythonPath,必须设置成这个目录的上一级目录! # this site url:http://localhost:80/mysite/ <Location "/mysite/">     SetHandler python-program     PythonPath "sys.path+['c:/django']"     PythonHandler django.core.handlers.modpython        SetEnv DJANGO_SETTINGS_MODULE myproject.settings     PythonInterpreter mysite     PythonDebug On </Location> 对于上面的配置,Limodou注释道:“上面 PythonPath 主要是将 myproject的目录加入到 sys.path ,以便 Django 可以找到。需要使用绝对路径。 SetEvn 中设置的 DJANGO_SETTINGS_MODULE 就对应于你的 项目名.配置文件。因此为了能导入 项目名.配置文件,就需要前面的 PythonPath 的设置。 PythonDebug 和 PythonAutoReload 建议在生产时设为 Off 。” 为了让图片、css、script能够被Apache成功加载,还需要在httpd.conf最后附加这段配置: 增加的配置行 #Alias /site_media 是用来将 myproject的静态文件设置一个 URL 访问的别名。 Alias /site_media c:/django/myproject/media <Location "/site_media/">        SetHandler None </Location>   #Alias /media 是将 Django Admin 的静态文件设置一个 URL 的访问别名。 Alias /media c:/Django-0.95/django/contrib/admin/media <Location "/media/">        SetHandler None </Location>   # file types we want to serve statically # case insensative match <LocationMatch "(?i)\.(jpg|gif|png|txt|ico|pdf|css|jpeg)$">        SetHandler None </LocationMatch>   Limodou在Step by step中特地说“同时可以注意到 settings 我改为了 settings_apache 了。一方面将要把其中的内容有关相对路径的东西改为绝对路径,另一方面我还想保持现在的 settings.py 。”这也是一个很好的做法。 最后,修改MaxRequestsPerChild为1,这是一个可选项。Limodou是这么说的“同时如果你不想每次重启Apache 来进行测试,可以将: MaxRequestsPerChild 0. 改为: MaxRequestsPerChild 1”   重启Apache服务。 6: 浏览 http://localhost:80/mysite/ 即可。   [参考资料] 1:《How to use Django with mod_python》Django官方文档 2:《HOWTO: Django on Windows》这篇blog给了我很大的帮助 3:《Django Step by Step (十二)》limodou的帮助文档 4:《如何安装 Django》


阅读全文(3529) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 1.105 second(s), page refreshed 144817794 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号