Windows Server 12部署Django时pip安装mod_wsgi失败报错求助
解决Windows Server 2012下编译mod_wsgi时出现的
wsgi_daemon_process未声明错误 你遇到的这个编译错误,本质是代码层面的版本兼容问题,大概率和mod_wsgi源码与Apache版本不匹配、编译环境配置遗漏有关,给你几个针对性的解决方案:
方案1:直接用预编译的mod_wsgi二进制包(最省心)
Windows手动编译C扩展本来就容易踩版本坑,不如直接下载完全匹配你环境的预编译文件:
- 务必选对应你环境的包:Apache是VC15编译的64位版本、Python3.6.4 64位、Windows Server 2012 64位
- 把下载后的
mod_wsgi.so放到Apache的modules目录,然后在httpd.conf里添加加载配置:LoadModule wsgi_module modules/mod_wsgi.so WSGIPythonHome "C:/你的Python3.6.4安装路径" - 之后正常配置Django的WSGI路径即可,省去编译的繁琐步骤。
方案2:修正编译的源码版本与参数(如果坚持手动编译)
如果一定要自己编译,检查这几个关键点:
- 对齐mod_wsgi源码与文档版本:你参考的是develop分支的文档,但如果下载的是旧版stable分支源码,可能会缺失
wsgi_daemon_process这类新结构体定义。建议切换到和文档对应的develop分支源码,或者使用支持Apache 2.4.x的最新stable版本。 - 指定正确的编译参数:编译时要明确指向Apache的apxs工具路径,比如:
确保apxs是VC15编译的Apache配套工具,不要混用其他VC版本的Apache组件。python setup.py install --apxs="C:/你的Apache安装目录/bin/apxs.exe" - 用正确的编译环境执行:打开
x64 Native Tools Command Prompt for VS 2017(VC15对应VS2017),再运行编译命令,确保环境变量正确加载了VC15的64位编译工具,避免32/64位环境混淆。
方案3:排查配置顺序(如果编译通过后仍报错)
要是编译成功但配置Apache时出现类似错误,要确保先加载mod_wsgi模块,再配置WSGIDaemonProcess这类指令——不要在模块加载前使用daemon相关的配置项。
内容的提问来源于stack exchange,提问作者D CC
相关产品推荐
相关产品推荐

