/ 中存储网

Apache配置model_python和django运行环境

2013-09-03 10:28:52 来源:ITJS.CN

1:这个问题搞了好久 然来是因为我的apache的model文件没有mod_python.so文件

解决办法是: 先装好python django 跟apance

下载mod_python-3.3.1.win32-py2.5-Apache2.2.exe这个文件安装时他会自动寻找python25的位置 点击继续

但是到倒数第二步的时候有个选项 就是选择你电脑apance安装的位置 点击apache位置 确认 然后他自己会把mod_python.so文件安装到model文件中:

然后再在apache的httpd.conf加上LoadModule pytyhon_module modules/mod_python.so

配置Django到Apache的步骤:

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

从  "EN-US">http://httpd.apache.org/

来获取"EN-US">apache_2.2.3-win32-x86-no_ssl.msi这个安装文件;

运行这个msi即可顺利安装 "EN-US">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://files.cnblogs.com/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/ 即可。