我已经尝试解决这个问题三天了。
我无法让 uwsgi 正确加载我的应用程序。我尝试过使用虚拟环境、重建新的 EC2 Ubuntu 实例、更改配置、不同版本的 uwsgi,但没有任何效果。
我有另一个完全相同的工作设置,没有版本、EC2、uwsgi、nginx、django。
UWSGI 应该从我的 wsgi.py 文件开始,但由于某种原因,它似乎正在寻找一个名为“web”的 python 模块,这是我的 django 项目的名称。这是 uwsgi 日志:
Thu Nov 9 14:11:33 2023 - spawned uWSGI worker 1 (pid: 24452, cores: 1)
Thu Nov 9 14:17:33 2023 - SIGINT/SIGTERM received...killing workers...
Thu Nov 9 14:17:34 2023 - worker 1 buried after 1 seconds
Thu Nov 9 14:17:34 2023 - goodbye to uWSGI.
Thu Nov 9 14:17:34 2023 - *** Starting uWSGI 2.0.20-debian (64bit) on [Thu Nov 9 14:17:34 2023] ***
Thu Nov 9 14:17:34 2023 - compiled with version: 11.2.0 on 21 March 2022 11:00:44
Thu Nov 9 14:17:34 2023 - os: Linux-6.2.0-1015-aws #15~22.04.1-Ubuntu SMP Fri Oct 6 21:37:24 UTC 2023
Thu Nov 9 14:17:34 2023 - nodename: ip-172-31-30-103
Thu Nov 9 14:17:34 2023 - machine: x86_64
Thu Nov 9 14:17:34 2023 - clock source: unix
Thu Nov 9 14:17:34 2023 - pcre jit disabled
Thu Nov 9 14:17:34 2023 - detected number of CPU cores: 1
Thu Nov 9 14:17:34 2023 - current working directory: /
Thu Nov 9 14:17:34 2023 - writing pidfile to /run/uwsgi/app/django/pid
Thu Nov 9 14:17:34 2023 - detected binary path: /usr/bin/uwsgi-core
Thu Nov 9 14:17:34 2023 - chdir() to /home/ubuntu/websites/web
Thu Nov 9 14:17:34 2023 - your processes number limit is 3738
Thu Nov 9 14:17:34 2023 - your memory page size is 4096 bytes
Thu Nov 9 14:17:34 2023 - detected max file descriptor number: 1024
Thu Nov 9 14:17:34 2023 - lock engine: pthread robust mutexes
Thu Nov 9 14:17:34 2023 - thunder lock: disabled (you can enable it with --thunder-lock)
Thu Nov 9 14:17:34 2023 - uwsgi socket 0 bound to UNIX address /run/uwsgi/app/django/socket fd 3
Thu Nov 9 14:17:34 2023 - setgid() to 33
Thu Nov 9 14:17:34 2023 - setuid() to 33
Thu Nov 9 14:17:34 2023 - Python version: 3.10.12 (main, Jun 11 2023, 05:26:28) [GCC 11.4.0]
Thu Nov 9 14:17:34 2023 - *** Python threads support is disabled. You can enable it with --enable-threads ***
Thu Nov 9 14:17:34 2023 - Python main interpreter initialized at 0x5645069cac10
Thu Nov 9 14:17:34 2023 - your server socket listen backlog is limited to 100 connections
Thu Nov 9 14:17:34 2023 - your mercy for graceful operations on workers is 60 seconds
Thu Nov 9 14:17:34 2023 - mapped 145840 bytes (142 KB) for 1 cores
Thu Nov 9 14:17:34 2023 - *** Operational MODE: single process ***
ModuleNotFoundError: No module named 'wsgi'
Thu Nov 9 14:17:35 2023 - unable to load app 0 (mountpoint='') (callable not found or import error)
Traceback (most recent call last):
File "web/wsgi.py", line 17, in <module>
application = get_wsgi_application()
File "/usr/local/lib/python3.10/dist-packages/django/core/wsgi.py", line 12, in get_wsgi_application
django.setup(set_prefix=False)
File "/usr/local/lib/python3.10/dist-packages/django/__init__.py", line 19, in setup
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
File "/usr/local/lib/python3.10/dist-packages/django/conf/__init__.py", line 102, in __getattr__
self._setup(name)
File "/usr/local/lib/python3.10/dist-packages/django/conf/__init__.py", line 89, in _setup
self._wrapped = Settings(settings_module)
File "/usr/local/lib/python3.10/dist-packages/django/conf/__init__.py", line 217, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/usr/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 992, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1004, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'web'
Thu Nov 9 14:17:35 2023 - unable to load app 0 (mountpoint='') (callable not found or import error)
Thu Nov 9 14:17:35 2023 - *** no app loaded. going in full dynamic mode ***
Thu Nov 9 14:17:35 2023 - *** uWSGI is running in multiple interpreter mode ***
Thu Nov 9 14:17:35 2023 - spawned uWSGI master process (pid: 24914)
Thu Nov 9 14:17:35 2023 - spawned uWSGI worker 1 (pid: 24919, cores: 1)
这是我的“/etc/uwsgi/apps-enabled/django.ini”文件:
[uwsgi]
chdir = /home/ubuntu/websites/web
env = DJANGO_SETTINGS_MODULE=web.settings
wsgi-file = web/wsgi.py
processes = 1
module = wsgi:application
plugins = python3
master=True
这是我的“/home/ubuntu/websites/web/web/wsgi.py”文件:
"""
WSGI config for web project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/4.2/howto/deployment/wsgi/
"""
import os
import sys
from django.core.wsgi import get_wsgi_application
#os.environ['DJANGO_SETTINGS_MODULE'] = 'web.settings'
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'web.settings')
application = get_wsgi_application()
这是我的项目目录:
/home/ubuntu/websites/web/
db.sglite3
manage.py
web.sock
gg/
(gg django app)
web/
settings.py
asgi.py
wsgi.py
我的settings.py有我允许的主机和WSGI_APPLICATION ='web.wsgi.application'
我正在运行 uwsgi 2.0.20-debian 和 Python 3.10.12。我目前没有使用 virtualenv,我想尽早使用它,但在故障排除中我想消除这个问题,所以我摆脱了它。我还运行用 apt 安装的 uwsgi。我尝试过用 pip 安装,但也不起作用。
我永远无法让它发挥作用。我尝试了几天,尝试调试 uwsgi 库,它只是工作不工作。
我转向并使用下面的指南来运行通过 pip 安装的 uwsgi,而不是 apt: