切换PostgreSQL后Apache报错及WSGI应用缺失问题求助
问题排查与解决方案
一、psycopg2模块找不到的问题
manage.py runserver正常但Apache报错找不到模块,核心原因是Apache的mod_wsgi未使用项目对应的Python环境:
- 检查mod_wsgi与Python版本匹配性:执行
mod_wsgi-express module-config,对比输出的Python路径和项目所用Python路径,若不一致需重新编译mod_wsgi适配你的Python版本,或在Apache配置中指定正确的Python路径。 - 绑定项目虚拟环境到Apache:在站点配置文件(如
000-default.conf)中添加:
替换WSGIDaemonProcess your_project python-home=/绝对路径/到你的虚拟环境 WSGIProcessGroup your_projectyour_project和虚拟环境路径,确保路径为绝对路径。 - 验证权限与安装位置:在项目Python环境中执行
pip show psycopg2查看安装目录,确保Apache运行用户(通常是www-data)对该目录有读取权限。
二、WSGI脚本无'application'应用的问题
- 检查
wsgi.py内容,确保正确导出application:
注意替换import os from django.core.wsgi import get_wsgi_application os.environ.setdefault('DJANGO_SETTINGS_MODULE', '你的项目名.settings') application = get_wsgi_application()你的项目名.settings为实际配置模块路径,避免拼写错误。 - 确认Apache配置路径正确性:确保
WSGIScriptAlias指向正确的wsgi.py绝对路径,同时配置目录访问权限:WSGIScriptAlias / /aa/bb/wsgi.py <Directory /aa/bb/> <Files wsgi.py> Require all granted </Files> </Directory> - 检查文件权限:确保
www-data用户能读取wsgi.py文件。
三、额外排查动作
- 查看Apache错误日志(通常在
/var/log/apache2/error.log),获取更具体的错误细节(如模块路径、权限报错等)。 - 切换到
www-data用户测试环境:
若此处报错,可直接定位环境或权限问题。sudo -u www-data /你的项目Python路径/bin/python >>> import psycopg2 >>> from django.core.wsgi import get_wsgi_application
内容的提问来源于stack exchange,提问作者Lucas Tornike
相关产品推荐
相关产品推荐

