Django & Gunicorn: ModuleNotFoundError при запуске gunicorn

Я следовал руководству по докеризации приложения Django, но у меня возникли проблемы с применением тех же инструкций к моему собственному приложению.

Моя структура папок выглядит следующим образом:

├── project_name
│   ├── app_name
│   │   ├── admin.py
│   │   ├── apps.py
│   │   ├── exceptions.py
│   │   ├── forms.py
│   │   ├── functions.py
│   │   ├── __init__.py
│   │   ├── migrations
│   │   ├── models.py
│   │   ├── __pycache__
│   │   ├── report_functions.py
│   │   ├── static
│   │   ├── templates
│   │   ├── tests.py
│   │   ├── upload_file.py
│   │   ├── urls.py
│   │   └── views.py
│   ├── project_name
│   │   ├── asgi.py
│   │   ├── __init__.py
│   │   ├── __pycache__
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   ├── db.sqlite3
│   ├── manage.py
│   └── static
│       ├── admin
│       └── app_name
├── Dockerfile
├── nginx.default
├── pip_cache
├── requirements.txt
├── start-server.sh
└── venv

start-server.sh

#!/usr/bin/env bash
# start-server.sh
if [ -n "$DJANGO_SUPERUSER_USERNAME" ] && [ -n "$DJANGO_SUPERUSER_PASSWORD" ] ; then
    (python3 manage.py createsuperuser --no-input)
fi
(cd project_name; gunicorn project_name.wsgi  --user www-data --bind 0.0.0.0:8010 --workers 3) &
nginx -g "daemon off;"

project_name/project_name/wsgi.py

"""
WSGI config for creativ_ceutical 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/3.0/howto/deployment/wsgi/
"""

import os

from django.core.wsgi import get_wsgi_application

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

application = get_wsgi_application()

Когда я запускаю скрипт start-server.sh, gunicorn не может породить рабочих из-за ModuleNotFoundError, который говорит "нет модуля с именем 'project_name'". Похоже, что это связано с файлом wsgi, но я не понимаю, почему, поскольку в папке project_name есть файл __init__.py, и я добавил его каталог в os.sys.path. Полная трассировка выглядит так:

nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error)
nginx: [emerg] bind() to [::]:80 failed (98: Unknown error)
[2021-10-06 17:17:17 +0100] [9703] [INFO] Starting gunicorn 20.1.0
[2021-10-06 17:17:17 +0100] [9703] [INFO] Listening at: http://0.0.0.0:8010 (9703)
[2021-10-06 17:17:17 +0100] [9703] [INFO] Using worker: sync
[2021-10-06 17:17:17 +0100] [9704] [INFO] Booting worker with pid: 9704
[2021-10-06 17:17:17 +0100] [9704] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/gunicorn/arbiter.py", line 589, in spawn_worker
    worker.init_process()
  File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 134, in init_process
    self.load_wsgi()
  File "/usr/lib/python3/dist-packages/gunicorn/workers/base.py", line 146, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/usr/lib/python3/dist-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 58, in load
    return self.load_wsgiapp()
  File "/usr/lib/python3/dist-packages/gunicorn/app/wsgiapp.py", line 48, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/usr/lib/python3/dist-packages/gunicorn/util.py", line 384, in import_app
    mod = importlib.import_module(module)
  File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'project_name'
[2021-10-06 17:17:17 +0100] [9704] [INFO] Worker exiting (pid: 9704)
[2021-10-06 17:17:17 +0100] [9703] [INFO] Shutting down: Master
[2021-10-06 17:17:17 +0100] [9703] [INFO] Reason: Worker failed to boot.
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error)
nginx: [emerg] bind() to [::]:80 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error)
nginx: [emerg] bind() to [::]:80 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error)
nginx: [emerg] bind() to [::]:80 failed (98: Unknown error)
nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Unknown error)
nginx: [emerg] bind() to [::]:80 failed (98: Unknown error)
nginx: [emerg] still could not bind()
Вернуться на верх