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 · 5763 次点击
    这是一个创建于 2291 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近要部署一个 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
    0312birdzhang
        17
    0312birdzhang  
       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  
       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  
       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   ·   实用小工具   ·   1189 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:42 · PVG 07:42 · LAX 15:42 · JFK 18:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.