您的位置:首页 > 数据库 > SQL

django + apache + windows server 2003 + sql server 2005 + mod_wsgi 配置

2012-03-24 16:37 906 查看
新博客地址:http://gorthon.sinaapp.com/

客户的变态要求我想不是我一个人遇到这样的吧……这种搭配除了折磨人还能干啥?

1. 先配置django与apache:

【1】 安装python2.6.5(默认安装)(添加PATH环境变量C:\Python26\和C:\Python26\Scripts)

【2】 安装django1.3.1(默认安装)

【3】 安装apache2.2(默认安装)(安装前先禁用iis),如果没有禁用iis,80端口被占用会出错,出错时:

netstat -nao

查看当前哪些端口正在使用<netstat -h>

C:\Documents and Settings\Administrator>netstat -nao

Active Connections

Proto Local Address Foreign Address State PID

TCP 0.0.0.0:80 0.0.0.0:0 LISTENING 4

TCP 0.0.0.0:135 0.0.0.0:0 LISTENING 712

TCP 0.0.0.0:445 0.0.0.0:0 LISTENING 4

TCP 0.0.0.0:1025 0.0.0.0:0 LISTENING 424

TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 1592

TCP 127.0.0.1:1026 0.0.0.0:0 LISTENING 1548

UDP 0.0.0.0:445 *:* 4

UDP 0.0.0.0:1029 *:* 772

UDP 0.0.0.0:1033 *:* 772

UDP 127.0.0.1:1031 *:* 1764

任务管理器相看PID为4的进程,发现是System,进入iis控制面板停止正在运行的网站,再输入命令发现没有80端口了,也可以下面这样

进入apache配置文件:

C:\Program Files\Apache Software Foundation\Apache2.2\conf

将#Listen 12.34.56.78:80

Listen 80改成Listen 8010

重启apache,ok。

或者直接停止IIS服务【强烈推荐】:

一、控制面板 - 管理工具 ,点击“服务”图标。

二、打开“服务”窗口后,右键点击“IIS Admin Service”,然后选择“停止”,再把他禁用掉。

【4】 配置apache和wsgi:

【4.1】 修改conf/httpd.conf文件:

Listen 12.34.56.78:8010#修改为相应ip和端口

【4.2】 将mod_wsgi.so扔到apache安装目录的modules目录下面

【4.3】 修改conf/httpd.conf文件:

添加两行如下:

LoadModule wsgi_module modules/mod_wsgi.so

Include "C:/LQF/apache_wsgi_conf/apache_django_wsgi.conf"

(试过python2.7.1和2.7.2,添加上面的第一句话后都不能启动apache,后来改成python2.6.5就可以正常使用了,可能是mod_wsgi.so编译的时候python2.7版本的问题,我看网上别人的2.7可以用,我的却不可以,看来我rp=0……)

【4.3.1】 在C:/LQF目录下新建apache_wsgi_conf目录, 其中LQF是我的Django的工程目录(即通过django-admin.py start project LQF产生的目录)

apache_wsgi_conf目录下新建两个文件,一个是apache_django_wsgi.conf,内容为:

Alias /static C:/LQF/media

<Directory "C:/LQF/media/static/"> 
Order allow,deny
Options Indexes
Allow from all
#IndexOptions FancyIndexing
</Directory>

#for testing wsgi
#WSGIScriptAlias / "C:/LQF/apache_wsgi_conf/test.wsgi"  

WSGIScriptAlias / "C:/LQF/apache_wsgi_conf/django.wsgi"

<Directory "C:/LQF/"> 
Allow from all
</Directory>


# media 目录是存放js,img,css等静态文件的目录

另外一个目录是django.wsgi,内容为:

import os
import os.path as osp
import sys

cur_path = osp.dirname(__file__)

project_path = osp.dirname(cur_path)

app_path = osp.join(project_path, 'LQFapp')

root_path = osp.dirname(project_path)

path = (project_path, app_path, root_path)

for p in path:
    if p not in sys.path:
        sys.path.insert(0, p)

os.environ['DJANGO_SETTINGS_MODULE'] = 'LQF.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()


# 其中LFQapp是我的应用目录(即通过django-admin.py startapp LQFapp产生的目录)

【4.3】 修改上一步中的两个文件使相应的路径正确

2. 配置sql server 2005:

【1】 安装sql server 2005(默认安装)

【2】 安装SQL Server Management Studio Express(默认安装)

【3】 安装pywin32(v210以上)(默认安装)

【4】 将django-mssql/sqlserver_ado目录(这个是用于django连接sql server的第三方库,pyodbc我没有配置成功,所以就用django-mssql了,托管在google code上面,用mercurial下载下来就好了hg clonehttps://code.google.com/p/django-mssql/,如果没有安装mercurial,不用着急,本文最后有提供下载地址)放到LQF目录下面,也可以先安装setup
tools然后python setup.py install将其安装在系统目录

【5】 修改settings.py数据库配置:

DATABASES = {
    'default': {
        'ENGINE': 'sqlserver_ado',
        'NAME': 'LQFapp',
        'USER': '',
        'PASSWORD': '',
        'HOST': os.environ['COMPUTERNAME'] + '\\' + os.environ.get('SQLINSTANCE', 'SQLEXPRESS'), # 如果是正版的sql server 2005将'SQLEXPRESS'改成'ss2005',具体的参数可以利用SQL Server Management Studio Express查看连接信息
        'PORT': '',
    }
}


【6】 利用SQL Server Management Studio Express新建一个名为LQFapp的数据库

【7】 工程目录(LQF)下python manage.py syncdb

【8】 通过上面的步骤数据库可以成功创建并产生表,但是启动apache之后,出现500错误,查看日志文件,提示找不到pywintypes26.dll,但是c:\windows\system32里面是有这个dll的,因为以前出现过这种错误(安装mysql的时候),解决方法:

将c:\windows\system32下面的pywintypes26.dll pythoncomloader26.dll pythoncom26.dll这三个dll复制到C:\Python26下面,重启apache,访问就可以了。

【9】如果上面还出现问题就把sqlserver_ado目录复制到C:\Python26\Lib\site-packages\django\db\backends下面试试。

下载地址:

djanog-mssql-for-python2.6 mod-wsgi-for-python2.6.so

apache-wsgi-conf
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: