HTSdTt3WygdgQQGe
V2EX  ›  Flask

Flask 生产环境好难配置

  •  
  •   HTSdTt3WygdgQQGe · Dec 17, 2019 · 10876 views
    This topic created in 2515 days ago, the information mentioned may be changed or developed.

    配了一天了,又是 nginx 又是 uWSGI 又是 Gunicorn,大佬可有 Docker 一键部署的环境

    50 replies  •  2019-12-19 08:46:10 +08:00
    lpd0155
    lpd0155
    Dec 17, 2019 via Android
    1
    配过 django 的,也是搞了一天多
    Vegetable
    Vegetable
    Dec 17, 2019
    2
    熟了就好了,nginx 配静态文件算是最容易踩坑的了,熟悉了就一遍过了.
    ericls
    ericls
    Dec 17, 2019 via iPhone
    3
    所有程序不都这样吗
    一个 server 一个 nginx
    hoobyy
    hoobyy
    Dec 17, 2019 via Android
    4
    你一个新手,哪需要 nginx,用 runserver 不香吗
    Trim21
    Trim21
    Dec 17, 2019❤️1
    5
    在 docker 里面用 gunicorn, 然后在机器上用一个 nginx 反代 docker 开出来的 http 端口
    Ultraman
    Ultraman
    Dec 17, 2019 via Android
    6
    @hoobyy 老哥,人家说了生产环境。。
    gwy15
    gwy15
    Dec 17, 2019
    7
    flask 要引入 CDN 更烦……
    ysicing
    ysicing
    Dec 17, 2019 via iPhone❤️1
    8
    你可以参考 ctfd 这个项目
    yuting0501
    yuting0501
    Dec 18, 2019 via iPhone
    9
    一直都用 docker 部署,很顺畅,网络上很多参考项目
    Nitroethane
    Nitroethane
    Dec 18, 2019 via iPhone
    10
    所以我用 flask 写了一半的项目正在用 go 重写
    renmu
    renmu
    Dec 18, 2019 via Android❤️1
    11
    Flask + Gunicorn 外面再套个 NGINX 就够了
    sadfQED2
    sadfQED2
    Dec 18, 2019 via Android
    12
    是的,我也部署过一次这玩意,以后项目这辈子都不想用他了。自己弄个虚拟机先搞搞吧,不熟悉最好别直接在物理机上弄
    HTSdTt3WygdgQQGe
    HTSdTt3WygdgQQGe
    OP
    Dec 18, 2019 via Android
    13
    @ysicing
    @Trim21
    @renmu 感谢几位实质性建议
    hakono
    hakono
    Dec 18, 2019
    14
    大部分语言都是这样的
    语言框架+web 服务+nginx 代理
    像 go 或 nodejs 这样写好直接无脑运行起来挂到服务器上自己本身就是个还算高效的 server 才是少数…………

    你 php 就得 php-fpm+nginx 呢
    whoosy
    whoosy
    Dec 18, 2019
    15
    flask+gunicorn+docker+nginx
    HTSdTt3WygdgQQGe
    HTSdTt3WygdgQQGe
    OP
    Dec 18, 2019 via Android
    16
    @ysicing 你是指这个嘛? https://github.com/CTFd/CTFd
    durban126
    durban126
    Dec 18, 2019
    17
    还好吧 没有多复杂吧
    如果是开发环境完全就可以使用
    flask run
    就起来了
    如果是生产环境推荐我使用的
    nginx + supervisor + gunicorn

    你说的复杂,我觉得是你不了解,所以说复杂,就跟吃饭一样,不会用筷子就说筷子不好用,但是学会了,岂不是吃嘛嘛香

    其他的看起来简单 都是大家经常用都总结好了的 你直接拿过来就好了 肯定不觉得麻烦
    TrickWu
    TrickWu
    Dec 18, 2019
    19
    Flask + Gunicorn + supervisor
    nginx 代理请求
    我都是这样开发的
    简单 上手一次之后就都明白了
    inhzus
    inhzus
    Dec 18, 2019 via Android
    20
    写好 supervisord 和 gunicorn 配置文件 volume 映射到 docker 里直接启动 supervisord,物理机套个 Nginx。

    flask 我最发愁的是 configuration,哎真的烦
    donotquestion
    donotquestion
    Dec 18, 2019❤️1
    21
    不会啊。。我都是 docker-compose 一遍过啊
    ipwx
    ipwx
    Dec 18, 2019 via Android
    22
    flask gunicorn 足以。uwsgi 既麻烦又不必要
    HTSdTt3WygdgQQGe
    HTSdTt3WygdgQQGe
    OP
    Dec 18, 2019 via Android
    23
    @donotquestion compose 文件是否方便分享一下
    tinybaby365
    tinybaby365
    Dec 18, 2019
    24
    如果你用 K8S,我就建议一个 pod 多个容器。退而求其次,用 docker-compose。千万不要一个 docker 塞 nginx+gunicron,把它当成一个 VM 使用。
    hmxxmh
    hmxxmh
    Dec 18, 2019
    25
    @tinybaby365 哈哈,我想起我第一个 docker 镜像一个多 g。。。,把系统,依赖全放到了容器
    encro
    encro
    Dec 18, 2019
    26
    nginx + supervisord + uwsgi 一行命令
    或者
    nginx + supervisord + gunicorn 一个配置
    john170502
    john170502
    Dec 18, 2019
    27
    golang 直接编译成二进制文件香不香?
    wuwukai007
    wuwukai007
    Dec 18, 2019 via Android
    28
    确实,不管用 docker 还是手动,都比较麻烦
    dongyx
    dongyx
    Dec 18, 2019
    29
    用 NGINX + Gunicorn 的,如何解决 url_for(..., external=True)返回的 URL 转换的问题?
    Allianzcortex
    Allianzcortex
    Dec 18, 2019
    30
    @Trim21 说的是正解,因为项目很多时候会有很多依赖(e.g. redis/celery),写好 docker-compose 一次编排就够了。做法如:

    command: >
    gunicorn -b 0.0.0.0:5000
    expose:
    - "5000"

    之后 Nginx 定义如下:

    nginx:
    image: nginx:stable-alpine(或者其他的 Linux 系统)
    container_name: your_server
    volumes:
    - ./nginx/conf.d:/etc/nginx/conf.d
    ports:
    - "5000:80"
    depends_on:
    - your-server

    亲历过所以可以肯定生产环境就是这样做的,用 AWS + rancher 配合很顺畅。
    wangyzj
    wangyzj
    Dec 18, 2019
    31
    在会用 nginx 的前提下
    Flask + Gunicorn 或者其他 server 搞起来就可以了
    ashCloud
    ashCloud
    Dec 18, 2019
    32
    (( nginx+uwsgi+flask )+supervisor )+docker 一把梭。
    弄不出来的话晚上可以格尼写个 demo
    lihongjie0209
    lihongjie0209
    Dec 18, 2019
    33
    @john170502 #27 这个东西和二进制打包有什么关系? go 的 web 程序内嵌 web 服务器? java 也支持
    楼主说的是多个组件之间配置麻烦
    wangmy
    wangmy
    Dec 18, 2019
    34
    @tinybaby365 在一个无外网环境下部署,我就是当容器用的,所有都在 docker 里面。没外网依赖太难处理了, 不知道还有啥简单的办法不
    superalsrk
    superalsrk
    Dec 18, 2019
    35
    nginx+gunicorn+flask 啊~很快
    superalsrk
    superalsrk
    Dec 18, 2019
    36
    不过你 qps 低的话。。直接 runserver 也行啊
    loading
    loading
    Dec 18, 2019 via Android
    37
    我想知道 windows 如何部署,准备写了个网盘,用 runserver,有一个下载就堵死啦
    @superalsrk
    Les1ie
    Les1ie
    Dec 18, 2019
    38
    https://github.com/tiangolo/uwsgi-nginx-flask-docker 我用的这个 缺点是比较耗内存 :( 能用就行的原则

    bug: 还真有,偶尔发现网站莫名 500 ( 1 年两三次), 手动重启一下容器才行,确信不是我的代码 bug
    Les1ie
    Les1ie
    Dec 18, 2019
    39
    我用过 runserver 并发大概为 1 吧... 极度容易挂掉,不推荐
    wzwwzw
    wzwwzw
    Dec 18, 2019
    40
    runserver 本身就是单线程的,要考虑 gunicorn + gevent 或者单 gunicorn 才行。
    est
    est
    Dec 18, 2019
    41
    可以试试 uWSGI 直出 HTTP 服务。免去了 nginx 的麻烦。
    ysicing
    ysicing
    Dec 18, 2019 via iPhone
    42
    @q409640976 是的,这个项目相对还是比较成熟的,几年前用过
    tmackan
    tmackan
    Dec 18, 2019
    43
    @hoobyy hhhhhh
    wybhdxfx
    wybhdxfx
    Dec 18, 2019
    44
    我的博客是 gunicorn+nginx,用着还可以。supervisor 暂时还用不上,需要更新就先 kill gunicorn,从 github pull,然后再启动 gunicorn。nginx 配好都很很少重启。
    hzwjz
    hzwjz
    Dec 18, 2019 via Android
    45
    使用 docker 就别用 uwsgi
    了,uwsgi 是要编译出来的。用 gunicorn 省时省力。

    如果实在是想用 docker+uwsgi,前往同性交友网站:/leollon/yet-another-image-bed.git😂
    CallMeReznov
    CallMeReznov
    Dec 18, 2019
    46
    NGINX+ FLASK 8001 8002 8003 8004 .....................................................多开?

    怕崩溃就用 bat 写个 LOOP 没问题吧?
    CallMeReznov
    CallMeReznov
    Dec 18, 2019
    47
    没 @就回复了,我说 WINDOWS 上简单的部署方式
    我本来是想回 @loading #37
    BFDZ
    BFDZ
    Dec 18, 2019❤️1
    48
    HTSdTt3WygdgQQGe
    HTSdTt3WygdgQQGe
    OP
    Dec 18, 2019 via Android
    49
    @BFDZ 多谢指点
    luckyc
    luckyc
    Dec 19, 2019
    50
    @Les1ie

    ```
    threaded=True 了解一下?
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1745 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 84ms · UTC 17:03 · PVG 01:03 · LAX 09:03 · JFK 12:03
    ♥ Do have faith in what you're doing.