mod_wsgi.so加载失败主因是架构与VC++运行库错配;需确保XAMPP、Python、mod_wsgi.so及VC++版本(如VC15)三者位数(x86/AMD64)和编译环境完全一致,并通过sigcheck和platform.architecture()验证。

mod_wsgi.so 加载失败:根本不是路径问题,是架构错配
Apache 报 Cannot load mod_wsgi.so 或启动直接静默崩溃,90% 情况下不是配置写错,而是 XAMPP(Apache)和 Python 的位数不一致。XAMPP 32 位 + Python 64 位、或反之,必然失败;VC++ 运行库版本(VC9/VC14/VC17)也必须严格匹配。
验证方法:httpd -M | findstr wsgi(Windows)或 httpd -t -D DUMP_MODULES(Linux/macOS),若无输出,说明模块根本没加载成功。
- 查 XAMPP Apache 架构:打开
C:\xampp\apache\bin\httpd.exe属性 → “兼容性” → 看是否勾选“以兼容模式运行”,更可靠的是用sigcheck -a C:\xampp\apache\bin\httpd.exe(Sysinternals 工具)看 Machine 字段(x86 / AMD64) - 查 Python 架构:命令行运行
python -c "import platform; print(platform.architecture())" - mod_wsgi.so 必须来自与二者完全匹配的预编译包 —— 推荐去
https://github.com/GrahamDumpleton/mod_wsgi/releases下载带明确命名的文件,如mod_wsgi-win32-ap24vc15py39-4.9.4.so(Apache 2.4 + VC15 + Python 3.9)
WSGIScriptAlias 配置后访问 500:环境变量和 Django 路径没对齐
页面空白或 500 错误,error.log 里常出现 ImportError: No module named mysite.settings 或 django.core.exceptions.ImproperlyConfigured,本质是 Python 解释器找不到项目或 settings。
关键不是把 WSGIPythonPath 指向项目根目录就完事 —— 它必须让 import mysite 成立,即该路径需包含 mysite/ 文件夹(含 __init__.py 和 settings.py)的父级目录。
强戈环形山: q15040409-刻画家功能概述强戈环形山: q15040409-刻画家是一项面向实际任务的技能,主要用于平顶山: 维西翁: 1:1.0. 塔格斯: rap.github: 自动化。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。核心要点使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该
-
WSGIScriptAlias / C:/xampp/htdocs/myproject/myproject/wsgi.py→ 对应的WSGIPythonPath应为C:/xampp/htdocs/myproject(不是.../myproject/myproject) - 确保
wsgi.py中os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")的"mysite"与实际项目名一致(新建项目时的名称,不是文件夹名) - 若用 virtualenv,必须加
WSGIPythonHome "C:/venv/path",且该 venv 必须用同架构 Python 创建
静态文件全 404:Apache 没接管 static/,还在转发给 Django
Django 开发服务器能自动服务 /static/,但 mod_wsgi 模式下它只处理动态请求。所有 STATIC_URL 对应的路径(如 /static/ 或 /assets/)必须由 Apache 直接读取磁盘文件,否则 CSS/JS 全挂。
必须执行 python manage.py collectstatic --noinput,把所有静态文件归集到 STATIC_ROOT 指定目录(如 C:/xampp/htdocs/myproject/staticfiles/),再让 Apache 映射过去。
- 在
httpd.conf或虚拟主机配置中添加:Alias /static/ "C:/xampp/htdocs/myproject/staticfiles/"<Directory "C:/xampp/htdocs/myproject/staticfiles/"> Require all granted</Directory>
- 路径分隔符必须用正斜杠
/,Windows 下反斜杠\会解析失败 - 如果
settings.py中设了STATIC_URL = '/assets/',则Alias第一项必须同步改成/assets/,否则请求永远 404
多项目共存时设置混乱:别共用一个 WSGI 进程
在同一 Apache 实例下部署多个 Django 项目,若都走默认进程,第二个项目会继承第一个项目的 DJANGO_SETTINGS_MODULE 和 Python path,导致白屏或配置错乱。
Windows 下虽不支持 daemon mode,但可用 WSGIApplicationGroup %{GLOBAL} 强制每个应用独立环境,或更稳妥地——为每个项目分配独立子路径 + 独立 WSGIScriptAlias + 独立 WSGIPythonPath。
- 避免把两个项目都映射到
WSGIScriptAlias /,至少一个用WSGIScriptAlias /blog/等子路径 - 每个
<directory></directory>块必须精确对应其 wsgi.py 所在目录,不能笼统写成<directory></directory> - 检查
wsgi.py开头是否硬编码了os.environ["DJANGO_SETTINGS_MODULE"]—— 若有,删掉,只留setdefault,否则无法被外部覆盖
mod_wsgi.so 就只是个躺在 modules/ 里的死文件。

















