進程管理工具Supervisord

進程管理工具Supervisord

前言

在 web 應用部署到線上後,須要保證應用一直處於運行狀態,在遇到程序異常、報錯等狀況,致使 web 應用終止時,須要保證程序能夠馬上重啓,繼續提供服務。
因此,就須要一個工具,時刻監控 web 應用的運行狀況,管理該進程。
Supervisor 就是解決這種需求的工具,能夠保證程序崩潰後,從新把程序啓動起來等功能。python

Supervisor 是一個用 Python 寫的進程管理工具,能夠很方便的用來在 UNIX-like 系統(不支持 Windows)下啓動、重啓(自動重啓程序)、關閉進程(不單單是 Python 進程)。

安裝

# via easy_install
$ easy_install supervisor
# via pip
# yum intall epel-release
# yum install python-pip
$ pip install supervisor

配置

# 建立配置文件
$ echo_supervisord_conf >> /etc/supervisord.conf

# 修改配置 /etc/supervisord.conf
[include]
files = /etc/supervisord.conf.d/*.conf

# 新建管理的應用
$ cd /etc/supervisord.conf.d
$ vim beepkg.conf

# 配置文件:
[program:beepkg] ; 程序名稱,在 supervisorctl 中經過這個值來對程序進行一系列的操做
directory=/opt/app/beepkg ; 程序的啓動目錄
command=/opt/app/beepkg/beepkg ; 啓動命令,與手動在命令行啓動的命令是同樣的
autostart=true ; 在 supervisord 啓動的時候也自動啓動
autorestart=unexpected ; 程序異常退出後自動重啓
startsecs=5
user=root ; 用哪一個用戶啓動
redirect_stderr=true ; 把 stderr 重定向到 stdout,默認 false
; stdout 日誌文件,須要注意當指定目錄不存在時沒法正常啓動,因此須要手動建立目錄(supervisord 會自動建立日誌文件)
stdout_logfile =/data/log/beepkg.log


stdout_logfile_maxbytes=20MB  ; stdout 日誌文件大小,默認 50MB
stdout_logfile_backups=20     ; stdout 日誌文件備份數
environment=PATH="/home/app_env/bin"  ; 能夠經過 environment 來添加須要的環境變量,一種常見的用法是使用指定的 virtualenv 環境

supervisord 管理

Supervisord 安裝完成後有兩個可用的命令行 supervisord 和 supervisorctl,命令使用解釋以下
$ supervisord -c /etc/supervisord.conf    # 初始啓動 Supervisord,啓動、管理配置中設置的進程。
$ supervisorctl stop beepkg               #中止某一個進程(programxxx),programxxx 爲 [program:beepkg] 裏配置的值,這個示例就是 beepkg。
$ supervisorctl start beepkg              #啓動某個進程
$ supervisorctl restart beepkg            #重啓某個進程
$ supervisorctl stop groupworker:         #重啓全部屬於名爲 groupworker 這個分組的進程(start,restart 同理)
$ supervisorctl stop all                  #中止所有進程,注:start、restart、stop 都不會載入最新的配置文件。
$ supervisorctl reload                    #載入最新的配置文件,中止原有進程並按新的配置啓動、管理全部進程。
$ supervisorctl update                    #根據最新的配置文件,啓動新配置或有改動的進程,配置沒有改動的進程不會受影響而重啓。
相關文章
相關標籤/搜索