Не удается запустить Gunicorn, ModuleNotFoundError: нет модуля с именем myproject.wsgi - PullRequest
0 голосов
/ 20 июня 2020

Вот моя структура папок:

~/myprojectdir
    manage.py
    myprojectenv/
        bin/
            activate
            gunicorn
            pip3
            python3
            ...
        lib/
            python3.6
            ...
    fishercoder/
        fishercoder/
            asgi.py
            urls.py
            settings.py
            wsgi.py
            __init__.py
            ...
        blog/
            views.py
            urls.py
            models.py
            admin.py
            apps.py
            templates/
            ...
        catalog/
            views.py
            urls.py
            models.py
            admin.py
            apps.py
            templates/
            ...

Я запустил source myprojectenv/bin/activate

Вот мой /etc/systemd/system/gunicorn.service файл:

[Unit]
Description=gunicorn daemon
Requires=gunicorn.socket
After=network.target

[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/myprojectdir
ExecStart=/home/ubuntu/myprojectdir/myprojectenv/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/run/gunicorn.sock \
          myproject.wsgi:application

[Install]
WantedBy=multi-user.target

Я заменил это строка:

myproject.wsgi:application

с этим

fishercoder.wsgi:application или с этим

wsgi:application

в соответствии с предложением из этого вопрос

Перезапуск Gunicorn. Не повезло ни с одним.

Ответы [ 2 ]

1 голос
/ 20 июня 2020

Если вы находитесь в режиме разработки, вы можете связать свой virtualenv с исходным кодом, чтобы gunicorn мог его найти.

Для этого активируйте свой virtualenv и установите проект в режиме редактирования:

source /home/ubuntu/myprojectdir/myprojectenv/bin/activate
cd /home/ubuntu/myprojectdir/fishercoder
pip install -e .

Конечно, вам понадобится setup.py в каталоге вашего проекта.

Ваш файл wsgi может быть на любом уровне, но обычно он находится в вашем root пакете.

Но в настоящее время ваш пакет root выглядит как fishercoder, поэтому в вашем файле конфигурации вам нужно написать: fishercoder.wsgi:application.

0 голосов
/ 21 июня 2020

На всякий случай, если кто-то также столкнется с той же проблемой, я смог разблокировать себя, скопировав содержимое из каталога ~/myprojectdir/fishercoder/ в его родительский каталог ~/myprojectdir/.

А затем измените это строка в моем /etc/systemd/system/gunicorn.service файле

ExecStart=/home/ubuntu/myprojectdir/myprojectenv/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/run/gunicorn.sock \
          myproject.wsgi:application

должна быть

ExecStart=/home/ubuntu/myprojectdir/myprojectenv/bin/gunicorn \
          --access-logfile - \
          --workers 3 \
          --bind unix:/run/gunicorn.sock \
          fishercoder.wsgi:application

По-видимому, это взломано и не идеально, но, по крайней мере, теперь оно работает. Я все еще пытаюсь найти руководство, которое поможет мне настроить setup.py более python способом.

...