Python web 部署,systemd OR supervisor? - 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
qq976739120
V2EX    Python

Python web 部署,systemd OR supervisor?

  •  
  •   qq976739120
    qq976739120 2018-08-08 22:41:28 +08:00 6378 次点击
    这是一个创建于 2620 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近要部署一个 flask 项目,打算采用 gevent+ gunicorn +systemd 的方式,但是网上的资料大都为 supervisor,我尝试了下比较繁琐,各位有什么建议吗
    41 条回复    2018-08-13 17:43:20 +08:00
    xiadd
        1
    xiadd  
       2018-08-08 22:57:53 +08:00
    我用的 supervisor 其实还蛮简单的 不过说起来 python web 部署起来还是太麻烦啊
    orangeade
        2
    orangeade  
       2018-08-08 22:58:40 +08:00 via Android
    @xiadd tornado 这种自带 HTTP server 的就简单了
    VVVVVEX
        3
    VVVVVEX  
       2018-08-08 23:02:55 +08:00
    docker
    yanaraika
        4
    yanaraika  
       2018-08-08 23:03:43 +08:00   1
    有条件还是上 docker 吧。次好的选择是 systemd,毕竟是未来的方向,supervisord 只是一个过渡时期的替代品
    node
        5
    node  
       2018-08-08 23:24:41 +08:00
    如果日志是打算在本机查看的话,systemd 可以用 journalctl 看,要比直接打开文本文件可玩的花样多
    qq976739120
        6
    qq976739120  
    OP
       2018-08-08 23:28:54 +08:00
    @node 日志打算有使用 elk 全家桶做处理
    qq976739120
        7
    qq976739120  
    OP
       2018-08-08 23:29:16 +08:00
    @VVVVVEX 我觉得虚拟环境目前足够我使用了
    qq976739120
        8
    qq976739120  
    OP
       2018-08-08 23:30:17 +08:00
    @yanaraika 但是百度 systemd 的教程比较少..清一色 supervisord,我也是用 supervisord 碰到了困难才找到 systemd 的方案的
    qq976739120
        9
    qq976739120  
    OP
       2018-08-08 23:33:52 +08:00
    @yanaraika 另外,你的意思是使用 docker 的话就不需要使用守护进程了?那开机自启动和程序挂掉重启动怎么做的....我看看去
    qq976739120
        10
    qq976739120  
    OP
       2018-08-08 23:34:07 +08:00
    @VVVVVEX docker 的话就不需要使用守护进程了?那开机自启动和程序挂掉重启动怎么做的....
    neoblackcap
        11
    neoblackcap  
       2018-08-09 00:20:51 +08:00
    @qq976739120 应该由你的容器集群管理方案决定,比如 k8s
    yanaraika
        12
    yanaraika  
       2018-08-09 01:22:35 +08:00
    @qq976739120 docker run --restart=always foobar。systemd 教程比较新基本都是英文,用 Google 搜吧
    prolic
        13
    prolic  
       2018-08-09 01:29:51 +08:00 via Android
    @qq976739120 docker 启动是把程序挂到前台的,程序死了 k8s 会自动重启新的
    shierji
        14
    shierji  
       2018-08-09 06:44:04 +08:00 via Android
    systemd,支持 venv 把 Python 路径指向 venv 里面的就行。至于教程少,我倒是没觉得啊……
    wzw
        15
    wzw  
       2018-08-09 07:32:20 +08:00
    python 防止被反编译, 如何处理?
    FindHao
        16
    FindHao  
       2018-08-09 07:59:10 +08:00 via Android
    1daydayde
        17
    1daydayde  
       2018-08-09 08:04:13 +08:00 via iPhone
    systemd 一个配置文件搞定。supervisor 为什么还不被淘汰
    virusdefender
        18
    virusdefender  
       2018-08-09 08:10:40 +08:00
    systemd 无法在 docker 中使用,除非 privileged=true
    HFcbyqP0iVO5KM05
        19
    HFcbyqP0iVO5KM05  
       2018-08-09 08:20:38 +08:00 via Android
    Docker 跑服务并且配置日志驱动为 glef,地址为 ELK stack 里 logstash 地址,可以很大程度解决你的需求。
    pcar
        20
    pcar  
       2018-08-09 08:35:43 +08:00
    我用 supervisor
    chenqh
        21
    chenqh  
       2018-08-09 09:02:34 +08:00
    supervisor 还好吧,简单,更何况 systemd 那么多 service,你不会担心找不到自己的进程 service 吗
    hotea
        22
    hotea  
       2018-08-09 09:24:33 +08:00
    systemd 配置写起来太复杂
    ray1888
        23
    ray1888  
       2018-08-09 10:18:20 +08:00
    docker 吧,不然每次每台机器都需要部署底层环境太麻烦了
    julyclyde
        24
    julyclyde  
       2018-08-09 10:20:22 +08:00
    @qq976739120 百度 systemd 资料少,你就不用了?那百度哪天如果坏了,你是不是还不干活了?
    julyclyde
        25
    julyclyde  
       2018-08-09 10:20:50 +08:00
    @yanaraika 选 docker,如果除了“有条件”之外没有别的理由,那基本上都意味着是错误选择
    julyclyde
        26
    julyclyde  
       2018-08-09 10:22:56 +08:00
    @ray1888 说的底层环境是选用 docker 的一个理由。不过其实只是把以前用 rpm/deb 表达的依赖关系,改由 docker 表达了而已,而且还不是描述式而是执行式的表达。dockerfile 里有些东西并不能保证每次都执行成功,尤其是和网络等外部环境相关的,所以其实并不是一个表达依赖关系和构建基础的好的方式
    ray1888
        27
    ray1888  
       2018-08-09 10:48:24 +08:00   1
    @julyclyde 所以才要一套的 CI/CD 来做,Dockerfile 当然是要本地测试过没问题才能放进 CI 的步骤里面,如果有其他的错误,由 CI 解决网络等 docker build 出现的问题( retry ),而且打包成镜像的好处是,可以同时存在多个版本,可以来做蓝绿发布,出问题了只需要把 docker 删掉就好了
    warcraft1236
        28
    warcraft1236  
       2018-08-09 10:49:48 +08:00
    不用 uwsgi 吗?
    qq976739120
        29
    qq976739120  
    OP
       2018-08-09 10:56:36 +08:00
    @julyclyde 也不是这个意思..我是搜了两个关键字,supervisor 显示的信息更多点,我觉得会不会是业界主流的部署方案..
    qq976739120
        30
    qq976739120  
    OP
       2018-08-09 10:56:56 +08:00
    @warcraft1236 这个没用...
    julyclyde
        31
    julyclyde  
       2018-08-09 11:10:19 +08:00
    @qq976739120 资料多,是否主流,这个想法倒是挺自然的。
    业界一直不太流行把“自研软件”放在“系统管辖( systemd、sysvinit 等)”之下
    lfzyx
        32
    lfzyx  
       2018-08-09 12:00:16 +08:00
    当然是 systemd,系统级支持
    pathbox
        33
    pathbox  
       2018-08-09 12:49:39 +08:00 via iPhone
    systemd 用的很爽
    FullBridgeRect
        34
    FullBridgeRect  
       2018-08-09 12:56:58 +08:00 via Android
    来一打 systemd 全家桶
    Tyanboot
        35
    Tyanboot  
    PRO
       2018-08-09 15:55:45 +08:00 via Android
    @virusdefender docker 里面没有什么理由用 systemd 吧。本身 docker 设计来就是跑单个进程的。
    virusdefender
        36
    virusdefender  
       2018-08-09 15:56:55 +08:00
    @Tyanboot #35 理论上是这样的,但是实际上也经常会用多个进程,比如 Nginx + web server + 队列之类的
    Tyanboot
        37
    Tyanboot  
    PRO
       2018-08-09 16:10:00 +08:00 via Android
    @virusdefender 这种情况请使用 docker-compose 编排多个容器,设置 restart: always。这样可以把比如队列挂了需要重启这种情况交给 docker daemon 去处理。
    virusdefender
        38
    virusdefender  
       2018-08-09 16:13:00 +08:00
    @Tyanboot #37 道理我都懂,可实际我用 supervisor + 多个进程在一个容器中用的更爽
    blackboom
        39
    blackboom  
       2018-08-10 12:04:37 +08:00
    想都不用想 直接使用 docker
    zqguo
        40
    zqguo  
       2018-08-13 00:21:59 +08:00
    用 docker 就好了
    numoone
        41
    numoone  
       2018-08-13 17:43:20 +08:00
    用 docker 的话是否必须能连外网,或者另外增加一台用来做 register 的 server ?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     6029 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 02:12 PVG 10:12 LAX 19:12 JFK 22:12
    Do have faith in what you're doing.
    ubao 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