supervisor + gunicorn 配置superset


在生產環境上直接跑一個py文件,感覺不太好,還是用 supervisor + gunicorn 部署一下放心

環境

  • system

CentOS 7.4.1708

  • python

Python 3.6.8

  • superset

superset 0.36

gunicorn

Gunicorn 是python中的WSGI容器,pre-fork worker模式,優點就是配置簡單,輕量級的資源消耗,以及高性能。

官方配置文檔

友情提示:多看官方文檔

大概簡單介紹一下我使用到的幾個配置

  • 1、worker

建議的 workers 數量是 (2*CPU)+1。

--workers=5 或者 -w 5

  • 2、worker_class

gevent的模式

-k gevent
  • 3、守護進程
-D 或者 --daemon
  • 4、輸出
--access-logfile FILE
--error-logfile FILE,
--log-file FILE
  • 最終的命令
gunicorn -D -w 10 -k gevent -b 0.0.0.0:8085 --access-logfile=success.log --error-logfile=error.log "superset.app:create_app()"

supervisor

  • 安裝
1. 安裝:yum install supervisor
2、啓動:systemctl start supervisord
3、開機啓動: systemctl enable supervisord

常用的幾個命令
1、supervisorctl status // 查看監控的項目
2、supervisorctl start xxx
3、supervisorctl stop xxx
4、supervisorctl restart xxx
5、supervisorctl reload // 重新加載配置文件

安裝之後 會在 /etc/目錄下 生成 supervisord.conf 文件 和 supervisord.d 文件夾

  • 配置

1、xxx 是項目的名字

2、commad 第一個是 虛擬環境的路徑

注意:需要安裝 gevent (pip install gevent)

3、directory: 項目的路徑

4、下面的配置信息 可以放2個地方都可以

第一:supervisord.conf 文件中,文件末尾

第二:supervisord.d 新建 xxx.ini 文件 (supervisord.conf 文件末尾include 包含就可以)

注意 gunicorn 不要守護進程配置supervisor, 不然不起作用,supervisor 控制不了

[program:xxxxx]
command=/home/xxx/venv/bin/gunicorn  -w 10 -k gevent -b 0.0.0.0:8085 --access-logfile=success.log --error-logfile=error.log superset.app:create_app()
directory=/home/xxxx
autostart=true
autorestart=true
stderr_logfile=/home/xxx/log/stderr.log
stdout_logfile=/home/xxx/log/stdout.log
user=root

結束語

1、先簡單介紹一下怎麼配置, 後續可能會寫 supervisor 和gunicorn 的工作原理

2、下次會寫 superset 上怎麼監控指標已經通知

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章