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

news/2024/7/1 21:08:44
 

[Django]WindowsDjango配置Apache示范设置

Version

Date

Creator

Description

1.0.0 .1

2006-11-20

郑昀

草稿

 

继续阅读之前,我们假设您熟悉以下知识:

n         Python

n         Django

n         Apache

如果不熟悉这些知识点,可以看本文最后资源列表中的文章。

本文讨论了在Windows环境下,将Django配置到Apache Web Server时所遇到的问题,以及最终解决的示范步骤。

 

您可以遵循后文描述的配置步骤,在此之前,我们先描述两个常见的错误现象。

[常见错误现象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_ROOTSTATIC_PATHTEMPLATE_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/

Order Deny,Allow

Allow from all

重启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 HandlerDispatch
result = object(req)

File “c:/django_src/django/core/handlers/modpython.py”, line 163, in handler
return 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_settings
self._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/

    SetHandler python-program

    PythonPath "sys.path+['c:/django']"

    PythonHandler django.core.handlers.modpython   

    SetEnv DJANGO_SETTINGS_MODULE myproject.settings

    PythonInterpreter mysite

    PythonDebug On

 

配置DjangoApache的步骤:

如何在Windows环境下安装Apachemod_Python 这篇Blog解释得很明白,我下面的这些步骤得到了验证。

1
     
 http://httpd.apache.org/
    
来获取apache_
      
       2.2.3
      -win32-x86-no_ssl.msi这个安装文件;
     
运行这个msi即可顺利安装Apache
     

2

网络上有很多说可以利用Apachemod_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

配置Apachehttpd.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/

    SetHandler python-program

    PythonPath "sys.path+['c:/django']"

    PythonHandler django.core.handlers.modpython   

    SetEnv DJANGO_SETTINGS_MODULE myproject.settings

    PythonInterpreter mysite

    PythonDebug On

对于上面的配置,Limodou注释道:“上面 PythonPath 主要是将 myproject的目录加入到 sys.path ,以便 Django 可以找到。需要使用绝对路径。

SetEvn 中设置的 DJANGO_SETTINGS_MODULE 就对应于你的 项目名.配置文件。因此为了能导入 项目名.配置文件,就需要前面的 PythonPath 的设置。

PythonDebug PythonAutoReload 建议在生产时设为 Off 。”

为了让图片、cssscript能够被Apache成功加载,还需要在httpd.conf最后附加这段配置:

增加的配置行

#Alias /site_media 是用来将 myproject的静态文件设置一个 URL 访问的别名。

Alias /site_media c:/django/myproject/media

       SetHandler None

 

#Alias /media 是将 Django Admin 的静态文件设置一个 URL 的访问别名。

Alias /media c:/Django-0.95/django/contrib/admin/media

       SetHandler None

 

# file types we want to serve statically

# case insensative match

       SetHandler None

 

LimodouStep by step特地说“同时可以注意到 settings 我改为了 settings_apache 了。一方面将要把其中的内容有关相对路径的东西改为绝对路径,另一方面我还想保持现在的 settings.py ”这也是一个很好的做法。

最后,修改MaxRequestsPerChild1,这是一个可选项。Limodou是这么说的“同时如果你不想每次重启Apache 来进行测试,可以将: MaxRequestsPerChild 0. 改为: MaxRequestsPerChild 1

 

重启Apache服务。

6

浏览 http://localhost:80/mysite/ 即可。

 

[参考资料]

1:《How to use Django with mod_pythonDjango官方文档

2:《HOWTO: Django on Windows》这篇blog给了我很大的帮助

3:《Django Step by Step (十二)limodou的帮助文档

4:《如何安装 Django
     



 

[Django]WindowsDjango配置Apache示范设置

Version

Date

Creator

Description

1.0.0 .1

2006-11-20

郑昀

草稿

 

继续阅读之前,我们假设您熟悉以下知识:

n         Python

n         Django

n         Apache

如果不熟悉这些知识点,可以看本文最后资源列表中的文章。

本文讨论了在Windows环境下,将Django配置到Apache Web Server时所遇到的问题,以及最终解决的示范步骤。

 

您可以遵循后文描述的配置步骤,在此之前,我们先描述两个常见的错误现象。

[常见错误现象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_ROOTSTATIC_PATHTEMPLATE_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/

Order Deny,Allow

Allow from all

重启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 HandlerDispatch
result = object(req)

File “c:/django_src/django/core/handlers/modpython.py”, line 163, in handler
return 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_settings
self._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/

    SetHandler python-program

    PythonPath "sys.path+['c:/django']"

    PythonHandler django.core.handlers.modpython   

    SetEnv DJANGO_SETTINGS_MODULE myproject.settings

    PythonInterpreter mysite

    PythonDebug On

 

配置DjangoApache的步骤:

如何在Windows环境下安装Apachemod_Python 这篇Blog解释得很明白,我下面的这些步骤得到了验证。

1
     
 http://httpd.apache.org/
    
来获取apache_
      
       2.2.3
      -win32-x86-no_ssl.msi这个安装文件;
     
运行这个msi即可顺利安装Apache
     

2

网络上有很多说可以利用Apachemod_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

配置Apachehttpd.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/

    SetHandler python-program

    PythonPath "sys.path+['c:/django']"

    PythonHandler django.core.handlers.modpython   

    SetEnv DJANGO_SETTINGS_MODULE myproject.settings

    PythonInterpreter mysite

    PythonDebug On

对于上面的配置,Limodou注释道:“上面 PythonPath 主要是将 myproject的目录加入到 sys.path ,以便 Django 可以找到。需要使用绝对路径。

SetEvn 中设置的 DJANGO_SETTINGS_MODULE 就对应于你的 项目名.配置文件。因此为了能导入 项目名.配置文件,就需要前面的 PythonPath 的设置。

PythonDebug PythonAutoReload 建议在生产时设为 Off 。”

为了让图片、cssscript能够被Apache成功加载,还需要在httpd.conf最后附加这段配置:

增加的配置行

#Alias /site_media 是用来将 myproject的静态文件设置一个 URL 访问的别名。

Alias /site_media c:/django/myproject/media

       SetHandler None

 

#Alias /media 是将 Django Admin 的静态文件设置一个 URL 的访问别名。

Alias /media c:/Django-0.95/django/contrib/admin/media

       SetHandler None

 

# file types we want to serve statically

# case insensative match

       SetHandler None

 

LimodouStep by step特地说“同时可以注意到 settings 我改为了 settings_apache 了。一方面将要把其中的内容有关相对路径的东西改为绝对路径,另一方面我还想保持现在的 settings.py ”这也是一个很好的做法。

最后,修改MaxRequestsPerChild1,这是一个可选项。Limodou是这么说的“同时如果你不想每次重启Apache 来进行测试,可以将: MaxRequestsPerChild 0. 改为: MaxRequestsPerChild 1

 

重启Apache服务。

6

浏览 http://localhost:80/mysite/ 即可。

 

[参考资料]

1:《How to use Django with mod_pythonDjango官方文档

2:《HOWTO: Django on Windows》这篇blog给了我很大的帮助

3:《Django Step by Step (十二)limodou的帮助文档

4:《如何安装 Django
     




http://www.niftyadmin.cn/n/3648266.html

相关文章

如何在CentOS 8上安装Apache Web服务器[快速入门]

介绍 (Introduction) The Apache HTTP server is the most widely-used web server in the world. It provides many powerful features including dynamically loadable modules, robust media support, and extensive integration with other popular software. Apache HTTP服…

SSH框架中N+1查询问题与解决方案

在Session的缓存中存放的是相互关联的对象图。默认情况下,当Hibernate从数据库中加载Customer对象时,会同时加载所有关联的Order对象。以Customer和Order类为例,假定ORDERS表的CUSTOMER_ID外键允许为null,图1列出了CUSTOMERS表和O…

django连接数据库_如何创建Django应用并将其连接到数据库

django连接数据库介绍 (Introduction) A free and open-source web framework written in Python, Django allows for scalability, re-usability, and rapid development. Django是一个用Python编写的免费开放源代码Web框架,可实现可伸缩性,可重用性和…

Jookster脱胎换骨的PeopleSearch

2006年11月18日,Jookster 的这次新变动用户体验相当完美,他们的口号是"Find and Share videos, photos and people from YouTube, Myspace and more!"!这次变动真够大的。以前的Jookster是一个通过用户驱动来调整搜索结果的服务。当…

百度的“搜索背后的人”的战略

百度、奇虎、雅虎、Google中国这4家中原逐鹿,百度是战略最稳定也最坚定的公司,产品最稳定也整合得最好的。 譬如说,通过搜人测试版,可以把用户在百度旗下的所有信息整合到一起:百度空间-搜人 测试版这样,当…

如何在Visual Studio Code中使用Git集成

介绍 (Introduction) Visual Studio Code (VS Code) has become one of the most popular editors out there for web development. It has gained such popularity thanks to its many built-in features such as source control integration, namely with Git. Harnessing th…

整合和被收购

分久必合合久必分。按照蚂蚁社区的目前做法看,主题一定不能过于模糊.但是也不能过于细.既不能按照像豆瓣按一本书、一张光碟、一个地方等来组织.也不能像论坛一样按照板块来组织。按照百度帖吧或者博啦360的形式是可以的。要能够机…

在Eclipse中运行Web项目时显示404错误

为了一个404错误整整花了一个下午&#xff0c;网上的各种方法都尝试了然后还是没有用 最早可以运行&#xff0c;又不想重新搭建换环境就就从头改 错误解决方法: 检查server中的web.xml文件 <param-value>的默认值是false&#xff0c;将false改为true,重新运行即可 在WebC…