您的位置:首页 > 运维架构 > Apache

[Django]Windows下Django配置Apache示范设置

2008-06-08 05:58 453 查看
 

[Django]Windows下Django配置Apache示范设置

VersionDateCreatorDescription
1.0.0.12006-11-20郑昀草稿
 继续阅读之前,我们假设您熟悉以下知识:n        Pythonn        Djangon        Apache如果不熟悉这些知识点,可以看本文最后资源列表中的文章。本文讨论了在Windows环境下,将Django配置到ApacheWebServer时所遇到的问题,以及最终解决的示范步骤。 您可以遵循后文描述的配置步骤,在此之前,我们先描述两个常见的错误现象。

[常见错误现象1]

关键词:     clientdeniedbyserverconfiguration表象:         访问了http://localhost:80/mysite/后,假如发现图片没有加载,或者css没有应用上,并且httpd.conf文件中Location的配置绝对路径肯定没错。 解释:         第一,  首先检查httpd.conf配置Alias的配置,看看Alias设置的路径是否正确,Alias/site_mediac:/django/myproject/media请保证您附加的这个路径肯定是你的图片或者css存放的路径。其次,请检查您的django项目myproject目录下的settings.py,保证MEDIA_ROOTSTATIC_PATHTEMPLATE_DIRS这三个参数指向的绝对路径正确无误。最后,如果上面的参数都没错,却还是不行。那么请您检查Apache的日志文件Apache2.2/logs/error.log如果您发现有这样的错误提示:
错误日志
[MonNov2017:27:082006][notice]Child4172:Startingthreadtolistenonport80.[MonNov2017:27:082006][error][client127.0.0.1]clientdeniedbyserverconfiguration:c:/Django/myproject/media/css/global.css,referer:'target='_blank'>http://localhost:80/mysite/
那么说明是因为对这些资源文件的访问被拒绝了。此时,请您浏览http://localhost:80/site_media/css/global.css,如果遇到了HTTP403错误,就说明是权限问题。此时,请到httpd.conf,增加如下配置来允许静态资源文件夹被访问:
增加的配置行
#对需要访问的区域,可以增加正确的Directory#否则会得到这样的错误:clientdeniedbyserverconfiguration:c:/Django/myproject/media/css/global.css,referer:http:/
/localhost:80/mysite/OrderDeny,AllowAllowfromall
重启Apache服务。 

[常见错误现象2]

关键词:     EnvironmentError:Couldnotimportsettings表象:         访问了http://localhost:80/mysite/后,直接页面报告如下错误:
页面错误输出
1.    Mod_pythonerror:“PythonHandlerdjango.core.handlers.modpython”Traceback(mostrecentcalllast):File“C:/Python24/Lib/site-packages/mod_python/apache.py”,line299,inHandlerDispatch
result=object(req)File“c:/django_src/django/core/handlers/modpython.py”,line163,inhandler
returnModPythonHandler()(req)File“c:/django_src/django/core/handlers/modpython.py”,line125,in__call__
ifsettings.ENABLE_PSYCO:File“c:/django_src/django/conf/__init__.py”,line27,in__getattr__
self._import_settings()File“c:/django_src/django/conf/__init__.py”,line54,in_import_settings
self._target=Settings(settings_module)File“c:/django_src/django/conf/__init__.py”,line82,in__init__
raiseEnvironmentError,“Couldnotimportsettings‘%s’(Isitonsys.path?Doesithavesyntaxerrors?):%s”%(self.SETTINGS_MODULE,e)EnvironmentError:Couldnotimportsettings‘myproject.settings’(Isitonsys.path?Doesithavesyntaxerrors?):Nomodulenamedmyproject.settings 
这是开始配置django+apache最容易遇到的问题,:D。 解释:这是因为apache在系统目录下找不到myproject/settings.py文件。首先检查PythonPath设置的路径是否正确:PythonPath"sys.path+['c:/django[b]']"[/b]注意,这个'c:/django[b]'[/b]路径实际是我们的项目路径c:/django/myproject的上一级目录!不要写错了。
增加的配置行
# mysite目录路径:c:/django/myproject#但是对于PythonPath,必须设置成这个目录的上一级目录!#thissiteurl:http://localhost:80/mysite/   SetHandlerpython-program   PythonPath"sys.path+['c:/django[b]']"[/b]   PythonHandlerdjango.core.handlers.modpython      SetEnvDJANGO_SETTINGS_MODULEmyproject.settings   PythonInterpretermysite   PythonDebugOn
 

配置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.rar3我们用Pythondjango-admin.pystartprojectmyproject命令,在C盘的django目录下创建了一个Django项目myproject。我们把它引用的图片文件和css文件等静态资源都放在myproject文件夹下的media目录中。此时,将myproject目录下的settings.py文件中的这三个参数修改一下,主要是为了从相对路径变成绝对路径:
修改的配置行
#Djangosettingsformyprojectproject.'''将相对路径改为绝对路径。主要有:MEDIA_ROOTTEMPLATE_DIRSSTATIC_PATH'''#Absolutepathtothedirectorythatholdsmedia.#Example:"/home/media/media.lawrence.com/"MEDIA_ROOT='c:/django/myproject'STATIC_PATH='c:/django/myproject/media'TEMPLATE_DIRS=(   #Putstringshere,like"/home/html/django_templates".   #Alwaysuseforwardslashes,evenonWindows.   'c:/django/myproject/templates',)
切记切记,一定要保证这三个参数是绝对路径。4配置Apache的httpd.conf配置文件:首先,在“DynamicSharedObject(DSO)Support”的配置下增加一行LoadModulepython_modulemodules/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,必须设置成这个目录的上一级目录!#thissiteurl:http://localhost:80/mysite/   SetHandlerpython-program   PythonPath"sys.path+['c:/django[b]']"[/b]   PythonHandlerdjango.core.handlers.modpython      SetEnvDJANGO_SETTINGS_MODULEmyproject.settings   PythonInterpretermysite   PythonDebugOn
对于上面的配置,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_mediac:/django/myproject/media      SetHandlerNone #Alias/media是将DjangoAdmin的静态文件设置一个URL的访问别名。Alias/mediac:/Django-0.95/django/contrib/admin/media      SetHandlerNone #filetypeswewanttoservestatically#caseinsensativematch      SetHandlerNone
 Limodou在Stepbystep中特地说“同时可以注意到settings我改为了settings_apache了。一方面将要把其中的内容有关相对路径的东西改为绝对路径,另一方面我还想保持现在的settings.py。”这也是一个很好的做法。最后,修改MaxRequestsPerChild为1,这是一个可选项。Limodou是这么说的“同时如果你不想每次重启Apache来进行测试,可以将:MaxRequestsPerChild0.改为:MaxRequestsPerChild1” 重启Apache服务。6:浏览http://localhost:80/mysite/即可。 

[参考资料]

1:《HowtouseDjangowithmod_python》Django官方文档2:《HOWTO:DjangoonWindows》这篇blog给了我很大的帮助3:《DjangoStepbyStep(十二)》limodou的帮助文档
4:《如何安装Django》



 

[Django]Windows下Django配置Apache示范设置

VersionDateCreatorDescription
1.0.0.12006-11-20郑昀草稿
 继续阅读之前,我们假设您熟悉以下知识:n        Pythonn        Djangon        Apache如果不熟悉这些知识点,可以看本文最后资源列表中的文章。本文讨论了在Windows环境下,将Django配置到ApacheWebServer时所遇到的问题,以及最终解决的示范步骤。 您可以遵循后文描述的配置步骤,在此之前,我们先描述两个常见的错误现象。

[常见错误现象1]

关键词:     clientdeniedbyserverconfiguration表象:         访问了http://localhost:80/mysite/后,假如发现图片没有加载,或者css没有应用上,并且httpd.conf文件中Location的配置绝对路径肯定没错。 解释:         第一,  首先检查httpd.conf配置Alias的配置,看看Alias设置的路径是否正确,Alias/site_mediac:/django/myproject/media请保证您附加的这个路径肯定是你的图片或者css存放的路径。其次,请检查您的django项目myproject目录下的settings.py,保证MEDIA_ROOTSTATIC_PATHTEMPLATE_DIRS这三个参数指向的绝对路径正确无误。最后,如果上面的参数都没错,却还是不行。那么请您检查Apache的日志文件Apache2.2/logs/error.log如果您发现有这样的错误提示:
错误日志
[MonNov2017:27:082006][notice]Child4172:Startingthreadtolistenonport80.[MonNov2017:27:082006][error][client127.0.0.1]clientdeniedbyserverconfiguration:c:/Django/myproject/media/css/global.css,referer:'target='_blank'>http://localhost:80/mysite/
那么说明是因为对这些资源文件的访问被拒绝了。此时,请您浏览http://localhost:80/site_media/css/global.css,如果遇到了HTTP403错误,就说明是权限问题。此时,请到httpd.conf,增加如下配置来允许静态资源文件夹被访问:
增加的配置行
#对需要访问的区域,可以增加正确的Directory#否则会得到这样的错误:clientdeniedbyserverconfiguration:c:/Django/myproject/media/css/global.css,referer:http:/
/localhost:80/mysite/OrderDeny,AllowAllowfromall
重启Apache服务。 

[常见错误现象2]

关键词:     EnvironmentError:Couldnotimportsettings表象:         访问了http://localhost:80/mysite/后,直接页面报告如下错误:
页面错误输出
1.    Mod_pythonerror:“PythonHandlerdjango.core.handlers.modpython”Traceback(mostrecentcalllast):File“C:/Python24/Lib/site-packages/mod_python/apache.py”,line299,inHandlerDispatch
result=object(req)File“c:/django_src/django/core/handlers/modpython.py”,line163,inhandler
returnModPythonHandler()(req)File“c:/django_src/django/core/handlers/modpython.py”,line125,in__call__
ifsettings.ENABLE_PSYCO:File“c:/django_src/django/conf/__init__.py”,line27,in__getattr__
self._import_settings()File“c:/django_src/django/conf/__init__.py”,line54,in_import_settings
self._target=Settings(settings_module)File“c:/django_src/django/conf/__init__.py”,line82,in__init__
raiseEnvironmentError,“Couldnotimportsettings‘%s’(Isitonsys.path?Doesithavesyntaxerrors?):%s”%(self.SETTINGS_MODULE,e)EnvironmentError:Couldnotimportsettings‘myproject.settings’(Isitonsys.path?Doesithavesyntaxerrors?):Nomodulenamedmyproject.settings 
这是开始配置django+apache最容易遇到的问题,:D。 解释:这是因为apache在系统目录下找不到myproject/settings.py文件。首先检查PythonPath设置的路径是否正确:PythonPath"sys.path+['c:/django[b]']"[/b]注意,这个'c:/django[b]'[/b]路径实际是我们的项目路径c:/django/myproject的上一级目录!不要写错了。
增加的配置行
# mysite目录路径:c:/django/myproject#但是对于PythonPath,必须设置成这个目录的上一级目录!#thissiteurl:http://localhost:80/mysite/   SetHandlerpython-program   PythonPath"sys.path+['c:/django[b]']"[/b]   PythonHandlerdjango.core.handlers.modpython      SetEnvDJANGO_SETTINGS_MODULEmyproject.settings   PythonInterpretermysite   PythonDebugOn
 

配置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.rar3我们用Pythondjango-admin.pystartprojectmyproject命令,在C盘的django目录下创建了一个Django项目myproject。我们把它引用的图片文件和css文件等静态资源都放在myproject文件夹下的media目录中。此时,将myproject目录下的settings.py文件中的这三个参数修改一下,主要是为了从相对路径变成绝对路径:
修改的配置行
#Djangosettingsformyprojectproject.'''将相对路径改为绝对路径。主要有:MEDIA_ROOTTEMPLATE_DIRSSTATIC_PATH'''#Absolutepathtothedirectorythatholdsmedia.#Example:"/home/media/media.lawrence.com/"MEDIA_ROOT='c:/django/myproject'STATIC_PATH='c:/django/myproject/media'TEMPLATE_DIRS=(   #Putstringshere,like"/home/html/django_templates".   #Alwaysuseforwardslashes,evenonWindows.   'c:/django/myproject/templates',)
切记切记,一定要保证这三个参数是绝对路径。4配置Apache的httpd.conf配置文件:首先,在“DynamicSharedObject(DSO)Support”的配置下增加一行LoadModulepython_modulemodules/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,必须设置成这个目录的上一级目录!#thissiteurl:http://localhost:80/mysite/   SetHandlerpython-program   PythonPath"sys.path+['c:/django[b]']"[/b]   PythonHandlerdjango.core.handlers.modpython      SetEnvDJANGO_SETTINGS_MODULEmyproject.settings   PythonInterpretermysite   PythonDebugOn
对于上面的配置,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_mediac:/django/myproject/media      SetHandlerNone #Alias/media是将DjangoAdmin的静态文件设置一个URL的访问别名。Alias/mediac:/Django-0.95/django/contrib/admin/media      SetHandlerNone #filetypeswewanttoservestatically#caseinsensativematch      SetHandlerNone
 Limodou在Stepbystep中特地说“同时可以注意到settings我改为了settings_apache了。一方面将要把其中的内容有关相对路径的东西改为绝对路径,另一方面我还想保持现在的settings.py。”这也是一个很好的做法。最后,修改MaxRequestsPerChild为1,这是一个可选项。Limodou是这么说的“同时如果你不想每次重启Apache来进行测试,可以将:MaxRequestsPerChild0.改为:MaxRequestsPerChild1” 重启Apache服务。6:浏览http://localhost:80/mysite/即可。 

[参考资料]

1:《HowtouseDjangowithmod_python》Django官方文档2:《HOWTO:DjangoonWindows》这篇blog给了我很大的帮助3:《DjangoStepbyStep(十二)》limodou的帮助文档
4:《如何安装Django》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: