Как разместить 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
Желаю хорошего дня :)