这是我的目录结构,在
/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 构建的。
我必须补充一下
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