django+uwsgi+daphne+supervisor生产环境部署
一、前言在上一篇文章中项目中使用了webscoket进行实时通讯,但是生产环境又使用了django+nginx+uwsgi的部署方式,我们都知道uwsgi并不能处理websocket请求,所以需要asgi服务器来处理websocket请求,官方推荐的asgi服务器是daphne,下面将介绍详细的部署步骤。 二、软件安装之前已经写过一一篇关于django+nginx+uwsgi的部署方式地址:,这里就不多说了,以下介绍daphne、supervisor、以及nginx代理websocket的安装配置。 1.部署daphne项目配置文件目录(wsgi.py同级)下创创建文件asgi.py,加入应用: <span style="color: #0000ff;">import <span style="color: #000000;"> os<span style="color: #0000ff;">import<span style="color: #000000;"> django <span style="color: #0000ff;">from channels.routing <span style="color: #0000ff;">import<span style="color: #000000;"> get_default_application os.environ.setdefault(<span style="color: #800000;">"<span style="color: #800000;">DJANGO_SETTINGS_MODULE<span style="color: #800000;">",<span style="color: #800000;">"<span style="color: #800000;">myproject.settings<span style="color: #800000;">"<span style="color: #000000;">) 启动daphne 测试是否正常运行(成功以后退出) daphne -p 8001 devops.asgi:application
2.安装supervisorsupervisor是由python实现的一个进程管理工具,可以确保所管理的进程一直运行,当进程一点中断supervisord会自动进行重启。 安装步骤:
yum install python--y epel--<span style="color: #008000;">#<span style="color: #008000;">手动安装:
wget https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.3<span style="color: #000000;">.tar.gz tar zxf supervisor-3.1.3<span style="color: #000000;">.tar.gz cd supervisor python setup.py install <span style="color: #008000;">#<span style="color: #008000;">pip安装: pip install supervisor 生成配置文件 echo_supervisord_conf > /etc/supervisord.conf
3.使用supervisor管理daphne进程编辑/etc/supervisord.conf加入配置 =/opt/app/devops
command=daphne -b 127.0.0.1 -p 8001 --proxy-headers devops.asgi:application
autostart===/tmp/websocket.log
redirect_stderr=true
启动supervisor supervisord -c /etc/supervisord.conf
启动或者停止daphne 三、代理webscoket修改nginx配置文件
127.0.0.1:8001<span style="color: #008000;">#<span style="color: #008000;">#####location配置 <span style="color: #000000;"> location /ws/<span style="color: #000000;">deploy { proxy_pass http://<span style="color: #000000;">wsbackend; proxy_http_version 1.1<span style="color: #000000;">; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection <span style="color: #800000;">"<span style="color: #800000;">upgrade<span style="color: #800000;">"<span style="color: #000000;">; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-<span style="color: #000000;">IP $remote_addr; proxy_set_header X-Forwarded-<span style="color: #000000;">For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-<span style="color: #000000;">Host $server_name; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |