无法使Django-CMS与Apache及mod_wsgi协同运行
解决Django-CMS Apache WSGI部署的权限与路径问题
问题背景
- 环境:Ubuntu 24.04 全新安装,Python 3.12,Django-CMS最新版本,虚拟环境部署
- 现象:Django-CMS通过
runserver可正常运行,但配置Apache虚拟主机后无法访问,日志持续报错
核心错误分析
从Apache错误日志可定位三个关键问题:
- 权限不足:Apache进程无法访问虚拟环境目录,提示
Permission denied: mod_wsgi ... Unable to stat Python home /home/mark/.virtualenvs/impact_lab_partners - 路径拼写错误:WSGI脚本路径中
impact_lab_parthers是拼写错误,应为impact_lab_partners - 冗余引号干扰:静态文件别名配置中多余的转义引号可能导致路径解析异常
修复步骤
1. 修正WSGI脚本路径拼写错误
找到虚拟主机配置中的WSGIScriptAlias行,将错误的impact_lab_parthers改为正确的impact_lab_partners:
WSGIScriptAlias / ${impact_lab_partners_path}/impact_lab_partners/wsgi.py process-group=ilp
2. 解决虚拟环境权限问题
Apache默认以www-data用户运行,需确保该用户能访问虚拟环境及上级目录:
方法一:快速开放权限(测试用)
# 给用户家目录添加执行权限,让www-data能进入 chmod o+x /home/mark # 给虚拟环境目录添加读/执行权限 chmod -R o+rx /home/mark/.virtualenvs/impact_lab_partners
方法二:用户组授权(更安全)
# 将www-data加入mark用户组 sudo usermod -aG mark www-data # 给家目录添加组执行权限 chmod g+x /home/mark # 给虚拟环境目录添加组读/执行权限 chmod -R g+rx /home/mark/.virtualenvs/impact_lab_partners
3. 清理静态文件别名的冗余引号
修正虚拟主机配置中Alias和Directory的冗余转义引号:
Alias /static /home/mark/Documents/impact_lab_partners/do_not_change/static <Directory /home/mark/Documents/impact_lab_partners/do_not_change/static> Require all granted </Directory> Alias /documents /home/mark/Documents/impact_lab_partners/do_not_change/documents <Directory /home/mark/Documents/impact_lab_partners/do_not_change/documents> Require all granted </Directory>
4. 重启Apache服务
sudo systemctl restart apache2
验证
- 查看Apache错误日志,确认无权限及模块错误:
tail -f /var/log/apache2/error.log - 访问网站域名,确认Django-CMS可正常加载
内容的提问来源于stack exchange,提问作者user1045680
相关产品推荐
相关产品推荐

