使用虚拟环境部署Django至Apache(Ubuntu)时出现内部服务器错误
Django虚拟环境部署Apache2 Internal Server Error 排查方案
1. 修复WSGIDaemonProcess路径配置
你的WSGIDaemonProcess仅指定了虚拟环境的site-packages路径,缺少项目根目录,导致Django无法加载项目模块。修改为:
WSGIDaemonProcess mysite processes=2 threads=25 python-path=/var/www/mysite:/var/www/mysite/venv/lib/python3.10/site-packages
同时确认mod_wsgi编译使用的Python版本与虚拟环境Python3.10一致,执行mod_wsgi-express module-config查看版本,若不匹配需重新编译mod_wsgi适配虚拟环境Python。
2. 修复静态/媒体文件Alias冲突
你配置了两个重复的Alias /static/,第二个会覆盖第一个,导致媒体文件路径错误。修改为:
Alias /robots.txt /var/www/mysite/static/robots.txt Alias /favicon.ico /var/www/mysite/static/favicon.ico Alias /static/ /var/www/mysite/static/ Alias /media/ /var/www/mysite/media/
3. 修复文件权限问题
确保Apache运行用户www-data对项目目录和虚拟环境拥有读取权限:
sudo chown -R www-data:www-data /var/www/mysite sudo chmod -R 755 /var/www/mysite
4. 查看具体错误日志定位根源
直接查看错误日志获取详细报错信息:
sudo tail -f /var/log/apache2/mysite-error.log
常见问题包括:
- Django模块找不到(路径配置错误)
- 虚拟环境Python与mod_wsgi版本不兼容
- 静态/媒体文件权限不足
- Django项目配置错误(如
DEBUG=False但ALLOWED_HOSTS未添加服务器IP)
5. 重启Apache生效配置
修改完成后重启服务:
sudo systemctl restart apache2
内容的提问来源于stack exchange,提问作者tiberhockey
相关产品推荐
相关产品推荐

