Ubuntu下用Apache2和mod-wsgi部署Django应用遇模块缺失错误求助
解决Django部署中ModuleNotFoundError及虚拟环境加载问题
问题分析
报错ModuleNotFoundError: No module named 'bitssatoshiproject'通常由以下原因导致:
- mod_wsgi版本与虚拟环境Python版本不兼容
- Apache配置中路径指向错误
- 文件/目录权限不足,导致Apache无法访问虚拟环境或项目文件
解决方案
1. 验证mod_wsgi与虚拟环境Python版本兼容性
mod_wsgi必须与虚拟环境的Python主版本号一致,否则无法正确加载虚拟环境:
- 查看当前mod_wsgi关联的Python版本:
mod_wsgi-express module-config
- 查看虚拟环境的Python版本:
/home/ubuntu/bitsvenv/bin/python --version
- 若版本不一致,卸载现有mod_wsgi后用虚拟环境的pip重新安装:
sudo apt remove libapache2-mod-wsgi-py3 # 若之前通过apt安装 source /home/ubuntu/bitsvenv/bin/activate pip install mod_wsgi # 复制mod_wsgi-express module-config输出的LoadModule和WSGIPythonHome配置 # 将配置添加到Apache的mods-available/wsgi.conf中,再重启Apache sudo systemctl restart apache2
2. 修正Apache虚拟主机配置
调整路径配置并完善目录权限规则:
<VirtualHost *:80> ServerAdmin ubuntu@172-31-11-19 ServerName 172-31-11-19 ServerAlias 172-31-11-19.com ErrorLog /home/ubuntu/site/logs/error.log CustomLog /home/ubuntu/site/logs/access.log combine # 允许Apache访问项目根目录 <Directory /home/ubuntu/BitsSatoshi> Require all granted </Directory> <Directory /home/ubuntu/BitsSatoshi/bitssatoshiproject> <Files wsgi.py> Require all granted </Files> </Directory> # 明确指定虚拟环境和项目根路径 WSGIDaemonProcess bits python-home=/home/ubuntu/bitsvenv python-path=/home/ubuntu/BitsSatoshi WSGIProcessGroup bits WSGIScriptAlias / /home/ubuntu/BitsSatoshi/bitssatoshiproject/wsgi.py </VirtualHost>
3. 修复文件/目录权限
确保Apache运行用户(www-data)能读取虚拟环境和项目文件:
# 修改目录所属用户组 sudo chown -R ubuntu:www-data /home/ubuntu/BitsSatoshi sudo chown -R ubuntu:www-data /home/ubuntu/bitsvenv # 设置合理的读写权限 sudo chmod -R 755 /home/ubuntu/BitsSatoshi sudo chmod -R 755 /home/ubuntu/bitsvenv
4. 验证虚拟环境依赖
确认虚拟环境中已安装Django及项目所需依赖:
source /home/ubuntu/bitsvenv/bin/activate pip install django # 若未安装Django pip install -r /home/ubuntu/BitsSatoshi/requirements.txt # 若存在依赖清单文件 deactivate
5. 重启Apache服务
应用所有配置更改:
sudo systemctl restart apache2
内容的提问来源于stack exchange,提问作者nehat khan
相关产品推荐
相关产品推荐

