Как разместить Django Channels (ASGI) с помощью amazon_ec2?

Конечные точки REST работают совершенно нормально, но конечные точки WS даже не регистрируются как попытки подключения WS. Когда я подключаюсь к wss://lms-backend-wiomf.ondigitalocean.app/ws/teacher/, он показывает

[lms-backend] [2021-07-05 03:51:44] Not Found: /ws/teacher/
[lms-backend] [2021-07-05 03:51:44] 10.244.59.39 - - [05/Jul/2021:03:51:44 +0000] "GET /ws/teacher/ HTTP/1.1" 404 2560 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"

как я могу успешно разместить мое приложение asgi на aws-ec2 кто нибудь помогите

Вы должны настроить сервер приложений Gunicorn в паре с Uvicorn, реализацией ASGI, для асинхронного взаимодействия с вашими приложениями. Затем вы должны настроить Nginx на обратный прокси на Gunicorn, что даст вам доступ к его функциям безопасности и производительности для обслуживания ваших приложений.

pip install uvicorn

Я предполагаю, что ваш проект Django отлично работает с помощью команды python manage.py runserver. Итак, давайте проверим способность Gunicorn обслуживать проект-

gunicorn --bind 0.0.0.0:8000 myproject.asgi -w 4 -k uvicorn.workers.UvicornWorker

Примечание: Не обязательно использовать Gunicorn для запуска вашего ASGI-приложения. Чтобы использовать только uvicorn, вы должны использовать следующую команду:

uvicorn myproject.asgi:application --host 0.0.0.0 --port 8080

Вы должны изменить ваш gunicorn.service файл, просто следуйте коду blew-

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

[Service]
User=root
Group=www-data
WorkingDirectory=/home/sammy/myprojectdir
ExecStart=/home/root/myprojectdir/myprojectenv/bin/gunicorn \
      --access-logfile - \
      -k uvicorn.workers.UvicornWorker \
      --workers 3 \
      --bind unix:/run/gunicorn.sock \
      myproject.asgi:application

[Install]
WantedBy=multi-user.target

Не забудьте изменить myproject на имя вашего проекта. Затем проверьте работает или нет ваша служба gunicron с помощью следующей команды-

sudo systemctl start gunicorn.socket
sudo systemctl enable gunicorn.socket

then,

sudo systemctl status gunicorn.socket

then test socket activation

sudo systemctl status gunicorn

Желаю хорошего дня :)

Вернуться на верх