Windows下Django部署Apache遇Internal Server Error 500求助
Windows下Apache+mod_wsgi部署Django 500错误排查遗漏点
验证mod_wsgi与Python版本匹配度:确保mod_wsgi的版本、位数(32/64位)和你运行Django的Python完全一致,哪怕调试日志显示模块加载正常,版本不匹配也会引发隐性异常。执行
mod_wsgi-express module-config命令,核对输出的Python路径是否和项目使用的Python路径一致。检查WSGIPythonPath配置:Apache配置文件中必须指定Django项目根目录(含manage.py的文件夹)和虚拟环境的site-packages路径(若使用虚拟环境),示例:
WSGIPythonPath C:\django_project_root;C:\venv\Lib\site-packages路径含空格时需用引号包裹,或改用短路径。
核对Django settings.py关键配置:
- 若
DEBUG = False,ALLOWED_HOSTS必须包含localhost或127.0.0.1,否则会触发安全限制导致500错误。 - 确认
STATIC_ROOT配置正确,collectstatic执行后静态文件已生成到对应目录,同时Apache的静态资源别名配置要匹配:Alias /static/ C:\path\to\static_root\ <Directory C:\path\to\static_root\> Require all granted </Directory>
- 若
DSO模块加载与依赖检查:
- 确认httpd.conf中的加载指令
LoadModule wsgi_module modules/mod_wsgi.so正确,且mod_wsgi.so文件确实在Apache的modules目录下。 - 执行
httpd -M命令查看已加载模块列表,确认wsgi模块存在;若为自定义编译的Apache版本,需确认编译时开启了DSO支持(如--enable-mods-shared=all参数)。
- 确认httpd.conf中的加载指令
查看Django本地错误日志:若Apache错误日志无内容,可临时将
DEBUG = True,重新访问页面获取详细错误信息(如模块导入失败、数据库连接问题等),调试完成后改回DEBUG = False。也可直接查看项目根目录下的django.log(若已配置日志系统)。检查文件权限:确保Apache服务运行用户(默认LocalSystem)对Django项目目录、静态文件目录、虚拟环境目录拥有读取权限,可通过右键目录→属性→安全面板添加权限。
排查端口占用:用
netstat -ano | findstr :8000命令检查8000端口是否被其他程序占用,若有冲突,停止占用程序或修改Apache监听端口。
内容的提问来源于stack exchange,提问作者SDIdo
相关产品推荐
相关产品推荐

