部署Django至Apache+mod_wsgi时遭遇500内部服务器错误求助
解决Django部署HTTP 500错误(ModuleNotFoundError: No module named 'django')
核心问题
日志明确显示找不到Django模块,说明Apache的mod_wsgi未正确加载虚拟环境的Python依赖,或编译的mod_wsgi版本与虚拟环境Python版本不匹配。
分步解决方案
1. 验证虚拟环境的Django安装
先确认虚拟环境内确实安装了Django:
# 激活虚拟环境 source /home/ubuntu/project/env/bin/activate # 检查Django是否存在 pip list | grep Django # 若未安装,执行安装 pip install django # 退出虚拟环境 deactivate
2. 重新编译mod_wsgi,绑定正确的Python版本
mod_wsgi必须与虚拟环境使用的Python版本一致才能正确识别依赖:
# 先卸载旧的mod_wsgi sudo a2dismod wsgi sudo rm /usr/lib/apache2/modules/mod_wsgi.so # 若路径不同,用`find / -name mod_wsgi.so`查找 # 重新编译(替换为你的Python3.10路径,可通过`which python3.10`获取) cd mod_wsgi-4.9.4 make clean ./configure --with-python=/usr/bin/python3.10 sudo make sudo make install # 启用mod_wsgi并重启Apache sudo a2enmod wsgi sudo systemctl restart apache2
3. 修正Apache虚拟主机配置
python-path需指向项目根目录(而非子应用目录),确保Django能找到项目模块:
<VirtualHost *:80> WSGIDaemonProcess myproject python-home=/home/ubuntu/project/env python-path=/home/ubuntu/project WSGIProcessGroup myproject WSGIScriptAlias / /home/ubuntu/project/my_project/wsgi.py <Directory /home/ubuntu/project/my_project> <Files wsgi.py> Require all granted </Files> </Directory> </VirtualHost>
修改后重启Apache:
sudo systemctl restart apache2
4. 修复文件权限
确保Apache用户(www-data)能访问项目目录和虚拟环境:
sudo chown -R www-data:www-data /home/ubuntu/project sudo chmod -R 755 /home/ubuntu/project
5. 临时开启调试模式排查(生产环境禁用)
修改/home/ubuntu/project/my_project/settings.py:
DEBUG = True ALLOWED_HOSTS = ['*'] # 替换为你的服务器IP或域名
重启Apache后,访问页面会显示具体错误信息,确认问题是否解决。
内容的提问来源于stack exchange,提问作者Pathia Nanto
相关产品推荐
相关产品推荐

