关于 Django+Nginx+uWSGI 部署问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xiaoshi657
V2EX    Python

关于 Django+Nginx+uWSGI 部署问题

  •  
  •   xiaoshi657 2018-05-14 20:42:48 +08:00 4648 次点击
    这是一个创建于 2712 天前的主题,其中的信息可能已经有所发展或是发生改变。

    配置文件如下:

    [uwsgi] socket=外网 ip:端口(使用 nginx 连接时,使用 socket ) http=外网 ip:端口(直接做 web 服务器,使用 http ) chdir=项目根目录 wsgi-file=项目中 wsgi.py 文件的目录,相对于项目根目录 processes=4 threads=2 master=True pidfile=uwsgi.pid daemOnize=uswgi.log 

    为什么

    使用 nginx 连接时,使用 socket,直接做 web 服务器,使用 http

    使用 nginx 的时候,用 socket 原因是什么呢, 可以用 http 吗

    14 条回复    2018-05-16 01:05:31 +08:00
    julyclyde
        1
    julyclyde  
       2018-05-14 22:10:11 +08:00   1
    可以
    twor
        2
    twor  
       2018-05-14 22:48:25 +08:00   1
    新手勉强回答一下

    socket=外网 ip:端口(使用 nginx 连接时,使用 socket )

    -- 也可以 http-socket 吧。 我配置都是用 socket file,感觉上效率更高

    http=外网 ip:端口(直接做 web 服务器,使用 http )

    -- 直接把 uWSGI 作为 http 服务器,不需要 nginx 了


    参考

    http://uwsgi-docs.readthedocs.io/en/latest/HTTP.html?highlight=http
    patx
        3
    patx  
       2018-05-14 22:58:34 +08:00   1
    unix socket 好一点吧,nginx 和 uwsgi 进程间直接通信
    http, http socket 效率低一点,为了安全,中间会有一些校验和路由
    FindHao
        4
    FindHao  
       2018-05-14 22:58:44 +08:00 via Android   1
    我们的 uWSGI 是通过网络端口暴露出来的,但是由于后面我们将使用 nginx 来处理实际的 client 连接,然后传递给 uwsgi,而由于这些操作都是在一个机器上运行的,因此这里我们改成 socket 的模式更安全快速。我们指定 socket 文件是当前项目目录下的 myproject.sock。
    https://www.findhao.net/easycoding/2218
    ybping
        5
    ybping  
       2018-05-14 23:16:15 +08:00 via iPhone
    socket 性能更好
    XiaoxiaoPu
        6
    XiaoxiaoPu  
       2018-05-15 01:16:11 +08:00 via iPhone
    unix socket 确实性能好一点,但是你们确实不用考虑多机部署?
    ericls
        7
    ericls  
       2018-05-15 03:00:26 +08:00 via iPhone
    @XiaoxiaoPu 多机部署就多个 nginx 咯?
    geeklian
        8
    geeklian  
       2018-05-15 07:59:22 +08:00 via Android
    socket 和 http 肯定不一样啦...

    socket 传递的是二进制数据包,然后 nginx 将写在 uwsg_params 的信息当环境变量传递给 uwsgi。

    http 传递的超文本数据包,nginx 将原本的 http 信息和 http_proxy 配置的信息糅合在一起重新打包 http,传递给 uwsgi。

    实际使用上的区别,比如获取客户端的 ip 地址,socket 通过 REMOTE_ADDR,http 就要通过 nginx 里配置定义的 x_forwared-for 之类的了。

    至于性能,其实没太大区别。理论上 socket 比 http 强,但业务逻辑和 orm 使用还是影响性能的大头。

    我喜欢用 http,因为内网 nginx 和 django+uwsgi 不在一个服务器上,配置 http 可以直接连 app 服务器测试。备机防火墙打掉到 nginx 的连接,就可以直接当测试机用了。当然这是在管理很随意的非互联网企业的操作。
    ycz0926
        9
    ycz0926  
       2018-05-15 08:59:12 +08:00
    你是要做成分布式的?
    XiaoxiaoPu
        10
    XiaoxiaoPu  
       2018-05-15 13:25:22 +08:00
    @ericls 一个机器宕机了靠 DNS 来切换么?那样生效太慢了啊
    234747005
        11
    234747005  
       2018-05-15 16:07:43 +08:00
    换做是我就会考虑直接用 haproxy 做 tcp 代理,放弃用 nginx。
    RicardoScofileld
        12
    RicardoScofileld  
       2018-05-15 18:30:53 +08:00
    主要 nginx 负载均衡,uwsgi 一个挂了,还能分配到其他上
    ericls
        13
    ericls  
       2018-05-16 00:43:31 +08:00 via iPhone
    @XiaoxiaoPu load balancer
    XiaoxiaoPu
        14
    XiaoxiaoPu  
       2018-05-16 01:05:31 +08:00
    @ericls 那不如 load balancer 直连 uwsgi
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1261 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 23:52 PVG 07:52 LAX 16:52 JFK 19:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86