2017-09-12 40 views
0

我有一個django項目,並最近添加了使用websockets的頻道。這似乎一切正常,但我的問題是讓生產準備就緒。Django頻道Nginx製作

我的設置如下:

Nginx web server 
Gunicorn for django 
SSL enabled 

自從我加入渠道的組合。我花了最後一天的時間試圖讓它工作。

在他們說你在某個端口上運行daphne的所有turtotials上,然後展示如何爲此設置nginx。

但是如何讓gunicorn服務django?

所以,現在我已經guncorn運行在8001

如果我在另一個端口上運行達芙妮這個Django應用程序,可以說8002 - 它應該怎麼知道它的這個Django項目的標準?那麼運行工人呢?

Gunicorn,Daphne和runworkers都應該一起運行嗎?

+0

我不確定你是否真的需要兩者?我沒有和達芙妮一起工作過,所以我可能是錯的。請檢查此線程是否有任何幫助https://stackoverflow.com/questions/42417919/deploy-to-docker-with-nginx-django-daphne –

回答

0

我最近回答了類似的question,看看那裏的django頻道如何工作的解釋。

基本上,你不需要gunicorn了。你有daphne這是接受HTTP/Websockets的接口服務器,你有你的工作人員運行django視圖。那麼顯然你有你的渠道後端,把所有東西粘在一起。

爲了使它工作,你必須配置settings.py中CHANNEL_LAYERS並運行接口服務器:

$ daphne my_project.asgi:channel_layer

和你的工人:

$ python manage.py runworker

NB!如果您選擇redis作爲頻道後端,請注意您提供的文件大小。如果您有大量的靜態文件,請確保NGINX爲他們提供服務,否則客戶端將遇到由於redis內存不足而可能發生的模糊錯誤。

+0

我不會推薦daphne用作HTTP的WSGI,因爲它需要更多的資源比接收HTTP流量的gunicorn工作者 –