最近因为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文件中加入:

OK,但是我们真正的安装才刚刚开始。
刚才说过由于python升级到2.7,之前所有的库都删掉了,所以不得不重新安装,需要准备好如下库。

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

不过万幸的事,居然有好心人帮我们把这些库都已经编译好了,页面如下:
http://www.lfd.uci.edu/~gohlke/pythonlibs/
不仅有MySqlPython For python2.7,还有很多其他的类库,是个很不错的地方~~
一切安装完毕之后,就是django的配置了。
1)我们通过python-admin.py创建一个project:
在D:\dgwww目录执行:

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

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

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

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

并执行:

3)修改httpd.conf
添加NameVirtualHost:

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

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

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

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

——————————————————————————
linux下的部署
linux的mod_wsgi是需要编译的,命令如下:

一个典型httpd.conf的配置如下:

生成project的命令如下:

附:linux下的httpd.conf下载

mysql,redis数据备份方案

之前在文章里面有提到过,很多事情,并没有绝对的对错,只是度的问题。而度的衡量又取决于时、势二字。所以当形势逼人的时候,基本就是这件事情非做不可的时...

阅读全文

最近的一些技术整理(20120109)

前段时间一直没写博客,昨天更新了一篇,今天突然又来了兴致,那就再更新一篇吧(所以说啊,治疗拖延症最好的方法就是现在开始做) 这篇还是一些技术的整理,...

阅读全文

再谈C++版的MySQL API封装

上一篇文章《更简洁的C++数据库访问框架-soci》介绍了soci,但也同时提到了一个缺点—insert/update/delete操作的时候,没有返回影响了多少行。 另外还...

阅读全文

12则回应给“apache+mod_wsgi+django在windows下的部署”

  1. Dante说道:

    刚发现用
    MaxRequestsPerChild 1
    来使修改不重启apache生效,在mod_wsgi下貌似也一样可以用,不过貌似不怎么稳定。
    另外,发现了一篇文章讲mod_wsgi的两种模式:
    http://ssmax.net/archives/977.html
    不过第二种模式在windows下模式启动不了:
    找到的问题贴的链接是:
    http://osdir.com/ml/DjangoUsers/2009-07/msg01764.html

    原文如下:
    And if it isn’t that, be aware that daemon mode isn’t available for
    the following:

    1. Windows.
    2. Apache 1.3 on UNIX
    3. Apache 2.X where the underlying Apache Runtime Libraries are not
    built with thread support.

    Number 3 is still sometimes the case on BSD systems. Note that 3 has
    got nothing to do with prefork MPM. If the APR has thread support,
    even if you are using prefork MPM, you can still use daemon mode.

    [回复]

  2. fatman说道:

    python manage.py syncdb

    这一步报了很多错误

    [回复]

    媚影狐仙 回复:

    是的,楼主的settings.py少配了数据库的相关内容。
    你需要将settings.py中的
    DATABASES = {

    }
    修改为你设定的库。
    我是用Mysql, 给你个参考:
    DATABASES = {
    ‘default’: {
    ‘ENGINE’: ‘mysql’, # Add ‘postgresql_psycopg2′, ‘postgresql’, ‘mysql’, ‘sqlite3′ or ‘oracle’.
    ‘NAME’: ‘apathon_site’, # Or path to database file if using sqlite3.
    ‘USER’: ‘root’, # Not used with sqlite3.
    ‘PASSWORD’: ‘sa’, # Not used with sqlite3.
    ‘HOST’: ”, # Set to empty string for localhost. Not used with sqlite3.
    ‘PORT’: ’3306′, # Set to empty string for default. Not used with sqlite3.
    }
    }

    注意, name 是数据库名, 如果你的数据库中没有需要重新create一个。

    [回复]

  3. 逸川说道:

    我用的是 WampServer 这个程序建的环境
    把 mod_wsgi.so 丢进去以后,在 httpd.conf 里添加
    LoadModule wsgi_module modules/mod_wsgi.so
    后,发现 apache 无法启动了……请问是不是还需要其他配置啊?

    [回复]

    Dante 回复:

    呃,我没用WampServer,是自己装的,看一下apache的错误log吧,应该能看出来

    [回复]

    逸川 回复:

    蛋疼的地方在於……折騰了一段時間以後,apache的錯誤log文件沒了……

    [回复]

  4. Icho说道:

    域名没有解析成功噢!!只能用127.0.0.1
    hosts 文件里面加了如上
    127.0.0.1 dante.qq.com 不行
    继续检查中

    [回复]

    Icho 回复:

    哈哈 加上这个就有戏了

    ServerName php.qq.com

    这个是重点MaxRequestsPerChild 1

    [回复]

  5. Cyiner说道:

    实在太感谢博主了~这个真的是有用呀~

    [回复]

  6. xamp说道:

    再setting.wsgi文件中无法导入os文件?请问楼主是怎么回事呢?

    [回复]

    Dante 回复:

    呃,这个只是这样描述我也不能确定呢。。

    [回复]

  7. Steve_zhou说道:

    @Dante,弱问下:

    你的DocumentRoot是设置的 d:/dgwww吧?

    [回复]

发表评论