使用 Apache 和 mod_wsgi 找不到模块 [my_app]

问题描述 投票:0回答:1

这是我的目录结构,在

/var/www

team_django
--team_db
---- __init__.py
-----settings.py
-----wsgi.py

我的wsgi.py:

import os

from django.core.wsgi import get_wsgi_application

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'team_db.settings')

application = get_wsgi_application()

我的

/etc/apache2/mods-available/wsgi.load

LoadModule wsgi_module "/usr/local/py_ptracker/lib/python3.11/site-packages/mod_wsgi/server/mod_wsgi-py311.cpython-311-x86_64-linux-gnu.so"
WSGIPythonHome "/usr/local/py_ptracker"

我的

/etc/apache2/sites-available/vhost.conf

<VirtualHost *:80>
    ServerName      mydomain
WSGIScriptAlias / /var/www/team_django/team_db/wsgi.py

<Directory /var/www/team_django/team_db>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
</VirtualHost>

mod_wsgi
已启用,作为虚拟主机配置,并且所有内容都可以正常加载。我在
error.log
中得到了这个:

ModuleNotFoundError: No module named 'team_db'
 [wsgi:error] [pid 225277] mod_wsgi (pid=225277): Failed to exec Python script file '/var/www/team_django/team_db/wsgi.py'., referer: ...
[wsgi:error] [pid 225277] mod_wsgi (pid=225277): Exception occurred processing WSGI script '/var/www/team_django/team_db/wsgi.py'., referer: ....

为什么

os.environ.setdefault
找不到
team_db
?我已经检查了所有权限,并将所有内容设置为 777,将所有者和组更改为 www-data 或 root 等等;无济于事。我不明白为什么它找不到 team_db。服务器可以与 Django 的 runserver 以及 mod_wsgi-express runserver 一起正确运行。

mod_wsgi 是在虚拟环境中使用相同版本的 Python 构建的。

python django mod-wsgi django-wsgi
1个回答
0
投票

我必须补充一下

from django.core.wsgi import get_wsgi_application

sys.path.append('/var/www/')
sys.path.append('/var/www/team_django')
sys.path.append('/var/www/team_django/team_db')```

to my .wsgi
© www.soinside.com 2019 - 2024. All rights reserved.