Рейтинг:0

Ошибка 502: разверните приложение Django с помощью Gunicorn и Nginx.

флаг ar

Я разработал веб-приложение с Django и пытаюсь опубликовать его на виртуальной машине, созданной с помощью Azure. Для этого я использую следующий программный стек:

  • Убунту (20.04)
  • Джанго (3.0.7)
  • Виртуалэнв (20.0.17)
  • Гуникорн (20.1.0)
  • Нгинкс (1.18.0)

Чтобы развернуть приложение, я следовал этому руководству: https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04

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

дом/
ââ пользовательadmin/
ââ мой проект/
â â ââ проект/
â â â ââ settings.py
â â â ââ urls.py
â â â ââ wsgi.py
...
â â ââ статический/
â â ââ шаблоны/
â â ââ venv/
â â ââ manage.py
...

Это мое /etc/systemd/система/gunicorn.service:

[Ед. изм]
Описание=демон пушки
После=network.target

[Оказание услуг]
Пользователь=useradmin
Группа=www-данные
Рабочий каталог=/home/useradmin/myproject
ExecStart=/home/useradmin/myproject/venv/bin/gunicorn --access-logfile --workers 3 --bind unix:/home/useradmin/myproject/myproject.sock proj.wsgi:application
[Установить]
WantedBy=многопользовательская.цель

Это мое /etc/nginx/доступные сайты/мой проект:

сервер {
    слушать 80;
    имя_сервера mydomain.com;

    location = /favicon.ico { access_log off; log_not_found выключен; }
    местоположение /статическое/ {
        корень /home/useradmin/мой проект;
    }

    место расположения / {
        включить proxy_params;
        proxy_pass http://unix:/home/useradmin/myproject/myproject.sock;
    }
}

Когда я перехожу на mydomain.com, я получаю ошибку 502 Bad Gateway. Если я проверю журналы Nginx, запустив «sudo tail -F /var/log/nginx/error.log», я увижу следующую ошибку:

16.03.2022, 08:27:33 [крит] 64480#64480: *3 Ошибка подключения() к unix:/home/useradmin/myproject/myproject.sock (2: Нет такого файла или каталога) при подключении к восходящему потоку, клиент: XX.XX.XX.XX, сервер: mydomain.com, запрос: "GET / HTTP/1.1", восходящий поток: "http://unix:/home/useradmin/myproject/myproject.sock:/", хост : "мойдомен.com"

Чтобы создать файл sock, я выполняю следующие инструкции, но ничего не меняется:

systemctl демон-перезагрузка
systemctl перезапустить gunicorn.service

ОБНОВЛЕНИЕ 1:

Пытаюсь выполнить инструкцию ls -la /home/useradmin/myproject/myproject.sock я получаю ошибку ls: невозможно получить доступ к '/home/useradmin/myproject/myproject.sock': нет такого файла или каталога

djdomi avatar
флаг za
что показывает `ls -la /home/useradmin/myproject/myproject.sock`? и на самом деле это может быть проще - попробуйте http://unix:/home/useradmin/myproject/myproject.sock: ;
El_Merendero avatar
флаг ar
Он возвращает `ls: невозможно получить доступ '/home/useradmin/myproject/myproject.sock': нет такого файла или каталога`
djdomi avatar
флаг za
исправьте свой сервис единорога во-первых, а во-вторых, пожалуйста, не оставляйте комментарии с вашей информацией, отредактируйте вопрос и добавьте туда информацию
El_Merendero avatar
флаг ar
Хорошо, большое спасибо, я редактирую вопрос. Как я могу исправить службу единорога?
djdomi avatar
флаг za
``ExecStart='/home/useradmin/myproject/venv/bin/gunicorn --access-logfile --workers 3 --bind unix:/home/useradmin/myproject/myproject.sock proj.wsgi:application' ` `` может быть проблемой... ПОТОМУ ЧТО он заявляет ``` gunicorn: error: аргумент -b/--bind: ожидается один аргумент ```, и вы предоставляете 2 аргумента, а не один. И минус-символ, который я не понимаю, для чего он должен быть

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.