首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
华为云
V2EX  ›  Python

Python web 部署,systemd OR supervisor?

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