• Windows编译安装mod_wsgi,配合使用Django+Apahce


    编译环境:

    均是32位版本

    Microsoft Visual Studio 10.0

    Microsoft SDKs v7.1

    Apache2.4

    Python3.4

    mod_wsgi-4.5.0


    要求:  

    1 Apache和Python都是32位或者都是64位,

    2 Apache和Python是相同版本的C++编译器编译的

    3 使用和上述相同版本的C++编译器编译mod_wsgi

    必须同时满足才能成功

    说明:  VC9==VS2008或VC10==VS2010

        Python 2.6 or 2.7  --  VC9

        Python 3.3 or 3.4  -- VC10 

        


    编译过程

    解压mod_wsgi-4.5.0.zip,进入win32目录,有如下的mk文件

    ap22py26-win32-VC9.mk
    ap22py27-win32-VC9.mk
    ap22py32-win32-VC9.mk
    ap24py26-win32-VC9.mk
    ap24py26-win64-VC9.mk
    ap24py27-win32-VC9.mk
    ap24py27-win64-VC9.mk
    ap24py32-win32-VC9.mk
    ap24py32-win64-VC9.mk
    ap24py33-win32-VC10.mk
    ap24py33-win64-VC10.mk
    ap24py34-win32-VC10.mk
    ap24py34-win64-VC10.mk

    这里我们需要的是 ap24py34-win32-VC10.mk ,修改里面的内容

    APACHE_ROOTDIR = D:ITApache24       #修改Apache和Python的根目录位置
    
    PYTHON_ROOTDIR = C:Python34
    PYTHON_VERSION = 34
    
    include common-VC10.mk

    CMD中设置临时的环境变量

    set path=C:Program FilesMicrosoft SDKsWindowsv7.1Bin;C:Program Files (x86)Microsoft Visual Studio 10.0VCin;C:Program Files (x86)Microsoft Visual Studio 10.0Common7IDE;
    
    set include=C:Program FilesMicrosoft SDKsWindowsv7.1Include;C:Program Files (x86)Microsoft Visual Studio 10.0VCinclude;
    
    set lib=C:Program FilesMicrosoft SDKsWindowsv7.1Lib;C:Program Files (x86)Microsoft Visual Studio 10.0VClib;

    #注意path和=之间不能有空格,还有path最后一个IDE别少了,否则会找不到其目录下的 mspdb100.dll

    现在可以在CMD中编译了

    cd /path/to/win32

    nmake -f ap24py34-win32-VC10.mk install

    等待编译结束,会在win32目录生成mod_wsgi.so,同时在Apache的modules目录生成mod_wsgi-py34-VC10.so,两个文件时一样的。


    安装Django

    pip install django==1.9              已经安装过旧版本的也可以升级到最新版本: pip install --upgrade django

    测试使用:

    在D:WebRootDjangoProject目录下CMD命令运行:

    django-admin  startproject  mysite     创建工程

    cd mysite

    python3 manage.py runserver 运行服务器

    浏览器127.0.0.1:8000出现It worked!说明OK

    修改mysite/wsgi.py 该文件是Apache找到Django工程的接口

    #!C:Python34python.exe     #否则会报错:wsgi.py is not executable; ensure interpreted scripts have "#!" or "'!" first line
    
    import os
    
    import sys      #添加这三行,可解决 ImportError: No module named 'mysite' 错误  WSGIPythonPath /path/to/mysite.com不管用,还不知道为啥。。。
     BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(BASE_DIR) 


    from django.core.wsgi import get_wsgi_application

    os.environ.setdefault(
    "DJANGO_SETTINGS_MODULE", "mysite.settings")

    application
    = get_wsgi_application()

    配置wsgi.py

    LoadModule wsgi_module modules/mod_wsgi-py34-VC10.so       #加载模块
    
    
    WSGIScriptAlias / "D:/WebRoot/DjangoProject/mysite/mysite/wsgi.py"     # / 表示根路径(base url),即输入http://127.0.0.1/时会找到wsgi.py来进入django工程 
    
    <Directory "D:/WebRoot/DjangoProject/mysite/mysite">         设置wsgi.py所在目录的权限  
      setHandler wsgi-script
      Options ExecCGI
    </Directory>
    Django官方文档给的方法不知道为啥会报错: End of script output before headers: wsgi.py
    
    WSGIScriptAlias / /path/to/mysite.com/mysite/wsgi.py
    WSGIPythonPath /path/to/mysite.com        
    
    <Directory /path/to/mysite.com/mysite>
    <Files wsgi.py>
    Require all granted
    </Files>
    </Directory>

    启动Apache服务

    浏览器127.0.0.1显示Django的It worked!说明Apache成功加载了django工程!

    KEEP LEARNING!
  • 相关阅读:
    JVM垃圾回收之三色标记
    负载均衡之LVS与Nginx对比
    浅析虚拟机内存管理模型
    JVM调优之垃圾定位、垃圾回收算法、垃圾处理器对比
    JAVA对象分析之偏向锁、轻量级锁、重量级锁升级过程
    全局负载均衡与CDN内容分发
    内存屏障在CPU、JVM、JDK中的实现
    JVM类加载与双亲委派机制被打破
    JVM虚拟机Class类文件研究分析
    Redis分布式锁升级版RedLock及SpringBoot实现
  • 原文地址:https://www.cnblogs.com/roronoa-sqd/p/5402865.html
Copyright © 2020-2023  润新知