[Django]Windows下Django配置Apache示范设置
2013-12-26 17:36
429 查看
[Django]Windows下Django配置Apache示范设置
Version | Date | Creator | Description |
1.0.0.1 | 2006-11-20 | 郑昀 | 草稿 |
nPython
nDjango
nApache
如果不熟悉这些知识点,可以看本文最后资源列表中的文章。
本文讨论了在Windows环境下,将Django配置到ApacheWebServer时所遇到的问题,以及最终解决的示范步骤。
您可以遵循后文描述的配置步骤,在此之前,我们先描述两个常见的错误现象。
[常见错误现象1]
关键词:clientdeniedbyserverconfiguration。表象:访问了
解释:
第一,首先检查httpd.conf配置Alias的配置,
看看Alias设置的路径是否正确,
Alias/site_mediac:/django/myproject/media
请保证您附加的这个路径肯定是你的图片或者css存放的路径。
其次,请检查您的django项目myproject目录下的settings.py,保证MEDIA_ROOT、STATIC_PATH、TEMPLATE_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: |
此时,请您浏览
此时,请到httpd.conf,增加如下配置来允许静态资源文件夹被访问:
增加的配置行 |
#对需要访问的区域,可以增加正确的Directory块 #否则会得到这样的错误:clientdeniedbyserverconfiguration:c:/Django/myproject/media/css/global.css,referer:http:/ <Directory"c:/Django/myproject/media/"> OrderDeny,Allow Allowfromall </Directory> |
[常见错误现象2]
关键词:EnvironmentError:Couldnotimportsettings。表象:访问了
页面错误输出 |
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 |
解释:
这是因为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/ <Location"/mysite/"> SetHandlerpython-program PythonPath"sys.path+['c:/django[b]']"[/b] PythonHandlerdjango.core.handlers.modpython SetEnvDJANGO_SETTINGS_MODULEmyproject.settings PythonInterpretermysite PythonDebugOn </Location> |
配置Django到Apache的步骤:
如何在Windows环境下安装Apache和mod_Python,2:
网络上有很多说可以利用Apache和mod_python源代码来编译安装mod_python的,但是如果你仅仅想快速安装,那么请从
直接下载
文件,运行这个exe即可顺利把mod_python安装到Python2.4以及Apache2.2;
由于GFW的封锁,可能您无法访问apache网站,那么可以从这里下载:
3:
我们用
Pythondjango-admin.pystartprojectmyproject
命令,在C盘的django目录下创建了一个Django项目myproject。我们把它引用的图片文件和css文件等静态资源都放在myproject文件夹下的media目录中。
此时,将myproject目录下的settings.py文件中的这三个参数修改一下,主要是为了从相对路径变成绝对路径:
修改的配置行 |
#Djangosettingsformyprojectproject. ''' 将相对路径改为绝对路径。主要有: MEDIA_ROOT TEMPLATE_DIRS STATIC_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为:
静态资源文件的存放目录:c:/django/myproject/media
项目文件夹路径:c:/django/myproject
好了,此时你就应该在httpd.conf文件的最后附加这段配置,以便让Apache知道到哪里去定位myproject/settings.py文件:
增加的配置行 |
#mysite目录路径:c:/django/myproject, #但是对于PythonPath,必须设置成这个目录的上一级目录! #thissiteurl:http://localhost:80/mysite/ <Location"/mysite/"> SetHandlerpython-program PythonPath"sys.path+['c:/django[b]']"[/b] PythonHandlerdjango.core.handlers.modpython SetEnvDJANGO_SETTINGS_MODULEmyproject.settings PythonInterpretermysite PythonDebugOn </Location> |
SetEvn中设置的DJANGO_SETTINGS_MODULE就对应于你的项目名.配置文件。因此为了能导入项目名.配置文件,就需要前面的PythonPath的设置。
PythonDebug和PythonAutoReload建议在生产时设为Off。”
为了让图片、css、script能够被Apache成功加载,还需要在httpd.conf最后附加这段配置:
增加的配置行 |
#Alias/site_media是用来将myproject的静态文件设置一个URL访问的别名。 Alias/site_mediac:/django/myproject/media <Location"/site_media/"> SetHandlerNone </Location> #Alias/media是将DjangoAdmin的静态文件设置一个URL的访问别名。 Alias/mediac:/Django-0.95/django/contrib/admin/media <Location"/media/"> SetHandlerNone </Location> #filetypeswewanttoservestatically #caseinsensativematch <LocationMatch"(?i)\.(jpg|gif|png|txt|ico|pdf|css|jpeg)$"> SetHandlerNone </LocationMatch> |
最后,修改MaxRequestsPerChild为1,这是一个可选项。Limodou是这么说的“
重启Apache服务。
6:
浏览
7:
跑admin工具界面:
出现界面如下:
输入使用manage.pysyncdb生成时设置的数据名和密码,便可以进入。
[参考资料]
1:《2:《
3:《
相关文章推荐
- derby database -apache
- Apache Shiro 标签模式授权
- Apache组织一级开源清单
- Apache的目录访问控制
- 设置本地虚拟域名windows+apache
- window XP下 php5.5+mysql+apache2+phpmyadmin安装
- apache启用gzip压缩方法
- Linux下把Mysql和Apache加入到系统服务里
- [原创]Apache Pig中文教程(进阶)
- og4j:WARN No such property [maxBackupIndex] in org.apache.log4j.DailyRollingFileAppender.
- CentOS Apache配置详解
- PHP搭建(windows64+apache2.4.7+mysql-5.6+php5.5+phpMyAdmin)和Discuz安装
- 关于Apache2.4限制目录访问配置的问题
- Apache Commons工具集简介
- Apache Thrift - 可伸缩的跨语言服务开发框架
- 在Mac下配置php开发环境:Apache+php+MySql
- java压缩与解压缩文件(利用apache的ant.jar)
- apache 日志为每个域名独立配置单独的日志文件
- mac 安装 apache2 php 无数据库
- 搭建PXE+DHCP+Apache+KicStart无人值守安装