64位Mod_wsgi支持win7,组建Apache的Python环境

Python网页服务器的搭建,Python网页架构主流配置由WSGI模块、Apache网页服务器、Django或Web.py框架构成(框架方面其实选择很多,个人比较喜欢DJANGO和Web.py)。

在这里,主要说明如何在Windows下构建Apache的Python平台,模块选择WSGI,框架使用Django。软件版本的选择:Windows7 + Python 2.7 + Apache 2.2.22 + Mod_wsgi 3.3。
python-django

Mod_Python模块其实也可以搭建类似的服务器,但是它只能支持Python 2.5,到后来的更新已经没有了。

软件上面,基本上都比较好找,选择最新版的就行。不过,操作系统方面选择了Windows 7,mod_wsgi官网的版本则不支持64位系统,因此这里列出了64位支持的mod_wsgi,非官方的版本,由加利福尼亚大学荧光光谱实验室提供,因此安全上值得信任。

软件下载地址:

软件安装和配置:

软件安装上面基本上都比较简单,从上面地址下载和操作系统对应的程序,安装即可。比较复杂的就是在Apache中配置WSGI运行环境和连接Django的问题,我们这里主要讲这个问题。

Python 2.7默认安装目录C:Python27

Apache 2.2.22默认安装目录C:Program FilesApache Software FoundationApache2.2

*Apache安装并运行,可以进入http://127.0.0.1查看是否正常,如果正常会显示”It works!”
这个来自于C:Program FilesApache Software FoundationApache2.2htdocs的文件index.html

Django 1.5默认安装目录C:Python27Libsite-packagesdjango

mod_wsgi 3.3模块安装:

  1. 下载mod_wsgi模块文件,
  2. 修改文件名为“mod_wsgi.so”
  3. 保存至Apache模块目录C:Program FilesApache Software FoundationApache2.2modules

安装步骤就到这里,是不是很简单?

接下来需要配置在Apache中配置WSGI,并且和Django连接,首先我们来配置wsgi在apache下的环境:

1. 进入C:Program FilesApache Software FoundationApache2.2conf,在Apache配置文件“httpd.conf”中添加以下内容:

[bash title=”在httpd.conf中添加”]
LoadModule wsgi_module modules/mod_wsgi.so

#这里的路径C:/www/,是用来存放代码的文件夹,app.wsgi是程序代码。
WSGIScriptAlias / C:/www/app.wsgi
<Directory "C:/www">
Order allow,deny
Allow from all
</Directory>
[/bash]

以上内容,你需要通过管理员权限打开文件,否则无法保存,这里我们提供了另外一种方法来来解决这个问题,在C:www文件夹下面创建apache_wsgi.conf,在上面的的文件httpd.conf和apache_wsgi.conf文件里分别设置如下:

[bash title=”httpd.conf”]
LoadModule wsgi_module modules/mod_wsgi.so

#链接apache_wsgi.conf文件

Include "C:wwwapache_wsgi.conf"

[/bash]

[bash title=”apache_wsgi.conf”]

WSGIScriptAlias / "C:/www/app.wsgi"
<Directory "C:/www">
Order allow,deny
Allow from all
</Directory>
[/bash]

要检查是否运行正常,请在刚刚创建的文件app.wsgi中写入以下代码,并重启Apache后进入127.0.0.1查看,正常的话,会出现”Hello World!”

[python title=”app.wsgi”]
def application(environ, start_response):
status = ‘200 OK’
output = ‘Hello World!’
response_headers = [(‘Content-type’, ‘text/plain’),
(‘Content-Length’, str(len(output)))]
start_response(status, response_headers)
return [output]
[/python]

ok,接下来,我们需要链接Django
在C:Python27Libsite-packagesdjangobin中找到django_admin.py文件,这里是是Django的初始工作,通过在命令行执行以下代码来创建一个名为www的项目

[bash]
python C:Python27Libsite-packagesdjangobindjango_admin.py startproject C:www
[/bash]

这个文件夹里面包含了

-www
        -manage.py
        -www
                -__init__.py
                -settings.py
                -urls.py
                -wsgi.py

wsgi.py里面包含了可以和Apache中的wsgi直接链接的内容,因此只需要修改apache的配置文件即可,这里我们修改刚刚新创建的扩展文件apache_wsgi.conf:

[bash title=”apache_wsgi.conf”]
WSGIScriptAlias / "C:/www/www/wsgi.py"
WSGIPythonPath "C:/www"

<Directory "C:/www/www">

Order allow,deny
Allow from all
</Directory>
[/bash]

需要提出的是,据我说知,在windows环境下,WSGIPythonPath只能使用在httpd.conf文档中,上面使用的扩展文件apache_wsgi.conf也支持,但是不能运行在<VirtualHost *:80></VirtualHost>之内。
一周以前,我还如此写道“我还没有找到能够在一个windows服务器下运行多个DJANGO程序的方式。”,但是今天查看WSGIPythonPath说明档后,找到了解决方式,”虚拟机运行多个django程序的配置”,将上面单机的内容全部删除修改为下面内容:

[bash title=”apache_wsgi.conf”]
#如果路径中间有空格的话,需要将路径以双引号标注。
WSGIPythonPath C:/mysite1;C:/mysite2
#vhosts 这里指的是虚拟机配置文件
Include C:/vhosts/httpd-vhosts.conf

[/bash]

“httpd-vhosts.conf”是一个Apachec的虚拟机文件,具体的内容的配置可以查看其它网站,这里给出一些简单的配置来支持双DJANGO项目的运行

[bash title=”httpd-vhosts.conf”]

NameVirtualHost *:80

<VirtualHost *:80>
     ServerAdmin webmaster@mysite1.com
     ServerName mysite1
     ServerAlias www.mysite1.com *.mysite1.com mysite1.com
     WSGIScriptAlias / "c:/mysite1/mysite1/wsgi.py"
     <Directory C:/mysite1/mysite1>
          Order deny,allow
          Allow from all
     </Directory>
     </VirtualHost>

<VirtualHost *:80>
     ServerAdmin webmaster@mysite2.com
     ServerName mysite2
     ServerAlias www.mysite2.com *.mysite2.com mysite2.com
     WSGIScriptAlias / "c:/mysite2/mysite2/wsgi.py"
     <Directory C:/mysite2/mysite2>
          Order deny,allow
          Allow from all
     </Directory>
</VirtualHost>
[/bash]
这样,整个环境就算配置好了,那么让我们测试一下写一个Hello World吧,
在C:wwwwww下创建views.py文件,内容:

[python title=”views.py” gutter=”true”]
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello World!")
[/python]

修改同目录下的urls.py:

[python title=”urls.py” gutter=”true”]
from django.conf.urls import patterns, include, url
import www.views
urlpatterns = patterns(”,
url(r’^$’, "views.hello"),
[/python]

评论

《 “64位Mod_wsgi支持win7,组建Apache的Python环境” 》 有 2 条评论

  1. pusonchen 的头像
    pusonchen

    hello

    你这篇文章给我很大帮助,我的apache 和mod_wsgi 终于正常了,但是还有一个问题:

    我已经建立了一个django的网站,叫做space,结构是这样的:
    /mysite
    manage.py
    mysite
    settings.py
    urls.py
    views.py
    wsgi.py
    space
    urls.py
    views.py
    admin.py
    models.py
    htmls
    ……等网站文件夹

    请问,按照你的方法,接下来我想显示我的网站,该怎么做呢?

    我用python 自带的server 都是正常的,也就是
    python manage.py runserver
    在127.0.0.1 下能看见我的网站。

    1. KunFly 的头像

      这个你需要在APACHE的配置文件指定你的wsgi.py文件即可。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据