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

摘要:
说明OK修改mysite/wsgi.py该文件是Apache找到Django工程的接口#!C:Python34python.exe#否则会报错:wsgi.pyisnotexecutable;ensureinterpretedscriptshave"#!"firstlineimportosimportsys#添加这三行,可解决ImportError:Nomodulenamed'mysite'错误WSGIPythonPath/path/to/mysite.com不管用,还不知道为啥。。。

编译环境:

均是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

Python2.6 or 2.7 -- VC9

Python3.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

Windows编译安装mod_wsgi,配合使用Django+Apahce第1张

等待编译结束,会在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

importos

importsys#添加这三行,可解决 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 importget_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工程!

免责声明:文章转载自《Windows编译安装mod_wsgi,配合使用Django+Apahce》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇判断字符串中是否存在的几种方案:string.indexof、string.contains、list.contains、list.any几种方式效率对比RN集成echarts4图表组件react-native-secharts(转载)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

隐藏Apache版本号

  为什么要隐藏版本号? 一般情况下,软件的漏洞信息和特定版本是相关的,因此,软件的版本号对攻击者来说是很有价值的。 如何隐藏? 要隐藏Apache版本号其实方法很简单在,只要在httpd.conf中对ServerTokens Prod与ServerSignature Off进行设置即可。 在默认情况下,系统会把Apache版本模块都显示出来(http返回...

让Apache Shiro保护你的应用

https://www.ibm.com/developerworks/cn/web/wa-apacheshiro/index.html Apache Shiro 是一个框架,可用于身份验证和授权。本文提供了几个示例用来展示如何在 Java™ 应用程序中使用 Shiro 并给出了如何在一个 Grails web 应用程序中使用它的概述。为了从本文中最大限度地...

Windows 下apache https配置(phpstudy)

1.首先获取证书,https://www.pianyissl.com/ 免费三个月的 或者 自己生成私钥、证书,然后应用到apache中。 http://blog.sina.com.cn/s/blog_58f71ef00102wvlx.html 讲解了如何在windows PHPStudy Apache 配置支持HTTPS http://www.cnbl...

Java#HttpClien详解

目录: (1)HttpClient简介 (2)HttpClient功能介绍 (3)HttpClient基本功能的使用 (4)HttpClient使用过程中常见问题 (5)HttpClient日志配置 (6)HttpClient处理关闭问题 (7)处理代理服务器 1.HttpClient简介 HttpClient是ApacheJakartaCommon下的子...

Django 部署到Nginx

在网上搜了很多篇Django+uwsgi+Nginx的部署文章,忙了一下午头昏脑胀,最终完成了部署。部署文章流程讲解都很好,但在细节上或许缺乏一些注意力,导致我多篇文章来回切换在字里行间寻找蛛丝马迹。既然我完成了部署,那我何不写下自己的流程和心得,让后来人有一些参考? 原理 Django+uwsgi+Nginx的工作模式如下图所示,三个服务各司其职,分别为...

Django之F和Q查询等其他查询

  1. 内容回顾   1. 外键的查询操作 1. 正向查找(详见day69内容回顾时间.py)    1. 基于对象的查询(SQL:子查询)    2. 基于双下划线的跨表查询(SQL:join)   2. 反向查找(详见day69内容回顾时间.py)   1. 基于对象的查询   2. 基于双下划线的跨表查询   2. 多对多关系  ManyToM...