IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

apache+mod_wsgi+django在windows下的部署

Vimer 2010-09-05 23:49:03 累计浏览 5,225 次
本机暂存

最近因为python升级到了2.7导致mod_python不能用,所以自己电脑上的apache一直启动不起来,趁着周末有时间,抓紧搞一下。
在网上搜了一下,发现mod_python已经停止维护了,而替代他的是mod_wsgi,下载路径如下:
http://code.google.com/p/modwsgi/downloads/list
挑选For 2.7的版本下载,改名成mod_wsgi.so,然后扔到apache的modules目录就可以了。
在apache的conf文件中加入:

LoadModule wsgi_module modules/mod_wsgi.so

OK,但是我们真正的安装才刚刚开始。
刚才说过由于python升级到2.7,之前所有的库都删掉了,所以不得不重新安装,需要准备好如下库。
1.setuptools(http://pypi.python.org/pypi/setuptools#files
2.MySQL for Python(http://sourceforge.net/projects/mysql-python/。当然,前提是你机器上已经安装了mysql)
3.django(http://www.djangoproject.com/download/)

setuptools和django都好说,关键出在了MySQL for Python上,官网上的版本是不支持python2.7的。即使你拿他的source回来在mingw下编译(python setup.py build --compiler=mingw32),也会报如下错误而无法继续:

gcc: /Zl: No such file or directory

不过万幸的事,居然有好心人帮我们把这些库都已经编译好了,页面如下:
http://www.lfd.uci.edu/~gohlke/pythonlibs/
不仅有MySqlPython For python2.7,还有很多其他的类库,是个很不错的地方~~

一切安装完毕之后,就是django的配置了。
1)我们通过python-admin.py创建一个project:
在D:\dgwww目录执行:

python C:\Python27\Lib\site-packages\django\bin\django-admin.py startproject mysite

然后在D:\dgwww下分别创建js,media,conf三个目录,在conf下创建文件setting.wsgi,内容如下:

import os
import sys
sys.stdout = sys.stderr
from os.path import abspath, dirname, join
from django.core.handlers.wsgi import WSGIHandler
sys.path.insert(0, abspath(join(dirname(__file__), "../")))
os.environ["DJANGO_SETTINGS_MODULE"] = "mysite.settings" #your settings module
application = WSGIHandler()

至此,整体目录结构如下:

/dgwww/
|~conf/
| `-setting.wsgi
|~js/
|~media/
`~mysite/
  |-__init__.py
  |-__init__.pyc
  |-manage.py
  |-settings.py
  |-settings.pyc
  |-urls.py
  `-urls.pyc

2)修改setting.py、urls.py
在setting.py中修改:

    ADMIN_MEDIA_PREFIX = '/admin_media/'
    MEDIA_URL = '/site_media/'

    并去掉django.contrib.admin的注释
在urls.py中:
    去掉如下注释:

    from django.contrib import admin
    admin.autodiscover()
    (r'^admin/', include(admin.site.urls)),

并执行:

python manage.py syncdb

3)修改httpd.conf

添加NameVirtualHost:

NameVirtualHost *

添加虚拟域名,并配置如下:

<VirtualHost *:80>
    ServerName dante.qq.com
    WSGIScriptAlias / D:/dgwww/conf/setting.wsgi
    <Directory />
        Options FollowSymLinks
        AllowOverride
        Order allow,deny
        Allow from all
    </Directory>
    <Directory "D:\dgwww\mysite">
        Order Deny,Allow
        Deny from all
    </Directory>
    Alias /admin_media "C:\Python27\Lib\site-packages\django\contrib\admin\media"
    <Directory "C:\Python27\Lib\site-packages\django\contrib\admin\media">
        Order allow,deny
        Options Indexes
        Allow from all
        IndexOptions FancyIndexing
    </Directory>
    #AliasMatch /js/(.*\.(js)) D:/dgwww/js/$1
    Alias /js D:/dgwww/js/
    <Directory "D:/dgwww/js/">
        Order allow,deny
        Options Indexes
        Allow from all
        IndexOptions FancyIndexing
    </Directory>
     
    #AliasMatch /site_media/(.*\.(css|gif|png|jpg|jpeg)) D:/dgwww/media/$1
    Alias /site_media D:/dgwww/media/
    <Directory "D:/dgwww/media/">
        Order allow,deny
        Options Indexes
        Allow from all
        IndexOptions FancyIndexing
    </Directory>
</VirtualHost>

    这里有个地方让我迷惑了好久,即Alias的时候,前面的参数最后是不能带/的,如/admin_media,不能写成/admin_media/,否则会失效。

4)修改host文件:

127.0.0.1 dante.qq.com

    访问dante.qq.com/admin,截图如下:

dadmin

最后,附httpd.conf,setting.py,setting.wsgi下载。

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 在Apache2.2.XX下安装Mod-myvhost模块 (累计阅读 13,056)
  2. server日志的路径分析 (累计阅读 11,239)
  3. AWStats简介:Apache/Windows IIS的日志分析工具的下载,安装,配置样例和使用(含6.9中文定义补丁) (累计阅读 10,088)
  4. 查看 Apache并发请求数及其TCP连接状态 (累计阅读 10,068)
  5. PHP程序的执行流程 (累计阅读 10,032)
  6. Cacti 添加 Apache 监控 (累计阅读 9,244)
  7. 大型高并发高负载网站的系统架构分析 (累计阅读 9,004)
  8. 使用Apache 和Passenger来运行puppetmaster (累计阅读 8,315)
  9. 使用apache的404设置来转向可能不存在的页面 (累计阅读 8,206)
  10. Python高效编程技巧 (累计阅读 7,902)