Nginx/Django 部署时出现 UWSGI 错误:ModuleNotFoundError:没有名为“web”的模块

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

我已经尝试解决这个问题三天了。

我无法让 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 安装,但也不起作用。

django ubuntu nginx uwsgi
1个回答
0
投票

我永远无法让它发挥作用。我尝试了几天,尝试调试 uwsgi 库,它只是工作不工作。

我转向并使用下面的指南来运行通过 pip 安装的 uwsgi,而不是 apt:

https://medium.com/analytics-vidhya/how-to-deploy-django-application-on-aws-ubuntu-ec2-with-nginx-and-uwsgi-a-practical-guide-1c114cb5f6b6

© www.soinside.com 2019 - 2024. All rights reserved.