在生產環境上直接跑一個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 上怎麼監控指標已經通知