django2.2+Daphne+nginx+supervisor生產(chǎn)環(huán)境部署方法

本篇內(nèi)容介紹了“django2.2+Daphne+nginx+supervisor 生產(chǎn)環(huán)境部署方法”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

成都創(chuàng)新互聯(lián)堅(jiān)實(shí)的技術(shù)研發(fā)基礎(chǔ)贏得了行業(yè)內(nèi)的良好口碑,公司成立10多年來,為1000多家企業(yè)提供過網(wǎng)站建設(shè)、軟件開發(fā)、搜索引擎優(yōu)化技術(shù)、互聯(lián)網(wǎng)大數(shù)據(jù)整合營銷服務(wù),多年的技術(shù)服務(wù)成功經(jīng)驗(yàn)、眾多的客戶使我們能懂得更多,做得更好。"讓您的網(wǎng)站跑起來"是我們一直追求的目標(biāo)!

之前項(xiàng)目中使用了 webscoket 進(jìn)行實(shí)現(xiàn)消息實(shí)時(shí)通知,我們是另外單獨(dú)運(yùn)行了一個(gè)消息推送服務(wù)項(xiàng)目,使用了django-channels 實(shí)現(xiàn)websocket,項(xiàng)目使用的是asgi 協(xié)議,不是原先的wsgi協(xié)議。運(yùn)行項(xiàng)目時(shí),提示也和wsgi的不一樣,如下圖:

django2.2+Daphne+nginx+supervisor 生產(chǎn)環(huán)境部署方法

官方推薦的 asgi 服務(wù)器是 daphne 處理 websocket 請求,下面說下如何部署daphne和supervisor。

1.安裝部署daphne

安裝 django-channels 的時(shí)候 daphne 就已經(jīng)連帶一起安裝了
在項(xiàng)目的根目錄新建一個(gè)asgi.py文件,和 wsgi文件同級,內(nèi)容如下:

import osimport djangofrom channels.routing import get_default_applicationos.environ.setdefault("DJANGO_SETTINGS_MODULE", "項(xiàng)目名稱.settings")django.setup()application = get_default_application()


2.測試 daphne 配置是否正確:
輸入如下命令,看 asgi 服務(wù)是否正常啟動(dòng):

daphne -b 0.0.0.0 -p 8008 項(xiàng)目名稱.asgi:application

在websocket在線測試網(wǎng)站,測試websocket是否可以正確建立鏈接

django2.2+Daphne+nginx+supervisor 生產(chǎn)環(huán)境部署方法

3.配置supervisor

首先是在終端輸入命令 pip install supervisor 安裝 supervisor
執(zhí)行 echo_supervisord_conf > /etc/supervisord.conf 生成supervisor的配置文件
編輯配置文件,輸入如下內(nèi)容:

[program:supervisor項(xiàng)目名稱]directory=/dqcy_message  #項(xiàng)目目錄command=daphne -b 0.0.0.0 -p 8008 代碼項(xiàng)目名稱.asgi:application #啟動(dòng)命令autostart=trueautorestart=truestdout_logfile=/tmp/websocket.log  #日志redirect_stderr=true

啟動(dòng)supervisor命令:supervisord -c /etc/supervisord.conf
啟動(dòng)或者停止 supervisor 項(xiàng)目服務(wù):

supervisorctl start supervisor項(xiàng)目名稱supervisorctl stop supervisor項(xiàng)目名稱

4.配置nginx

使用nginx轉(zhuǎn)發(fā)websocket,方面拓展后期的負(fù)載均衡。

server {        listen 80;        server_name 瀏覽器訪問的ip地址;
       location /async {            proxy_http_version 1.1;            proxy_set_header Upgrade $http_upgrade;            proxy_set_header Connection "upgrade";
           proxy_redirect off;            proxy_set_header Host $host;            proxy_set_header X-Real-IP $remote_addr;            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;            proxy_set_header X-Forwarded-Host $server_name;            proxy_pass http://127.0.0.1:8008/async; # websocket啟動(dòng)端口號和路由前綴,要和項(xiàng)目中routing配置的路徑保持一致}

“django2.2+Daphne+nginx+supervisor 生產(chǎn)環(huán)境部署方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

分享名稱:django2.2+Daphne+nginx+supervisor生產(chǎn)環(huán)境部署方法
文章源于:http://bm7419.com/article10/jjspdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、云服務(wù)器、企業(yè)網(wǎng)站制作、外貿(mào)建站、Google、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化