如何使用amazon_ec2托管Django频道(ASGI)?

9q78igpj  于 2022-11-19  发布在  Go
关注(0)|答案(1)|浏览(129)

REST端点完全正常工作,但WS端点甚至没有注册为WS连接尝试。

[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"

我如何在aws-ec2上成功地托管我asgi应用程序?

vlju58qv

vlju58qv1#

您必须配置Gunicorn应用服务器和Uvicorn(一个ASGI实现),以异步方式与您的应用程序接口。然后,您必须设置Nginx以反向代理Gunicorn,这样您就可以访问其安全性和性能特性来服务您的应用程序。

pip install uvicorn

我假设你的Django项目在python manage.py runserver命令下运行得很好。

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文件,只要按照吹代码-

[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

然后,

sudo systemctl status gunicorn.socket

则测试套接字激活

sudo systemctl status gunicorn

祝你有美好的一天:)

相关问题