Supervisor 從入門到放棄

clipboard.png

前言

Supervisor是一個客戶端/服務器系統,容許其用戶在類UNIX操做系統上控制許多進程。(官方解釋)

簡單點來說,就是一個監控腳本運行的工具,不過他能夠統一化管理,laravel的隊列文檔上也有相關使用方式方法,例如php

  • 定時腳本的啓動、重啓、關閉和日誌監控
  • swoole的啓動、重啓、關閉和日誌監控 (衆所周知,swoole大部分的特性都只能在cli中運行)
  • redis的啓動、重啓、關閉和日誌監控 (redis自身未提供相似phpmyadmin的後臺可視化工具)
  • laravel中的隊列、一些自動化的腳本、workman等等的腳本

通常都使用 &test.sh 讓其來保證在後臺運行,但在不少狀況下,沒法對腳本我的化的監控。這時你可能就須要 Supervisor 來幫助你。你大可把它看成你的unix系統的可視化管理後臺。下面來讓咱們見證它的強大之處。html

安裝

Supervisor 有多種安裝方式,我推薦其中最簡單也是最容易安裝的一種python

apt-get -y install python-setuptools
easy_install supervisor

正如你所見,兩條命令即完成安裝laravel

配置

Supervisor安裝完成後,運行 echo_supervisord_conf。這將打印一個示例的Supervisor配置文件到您的終端。只要你能看到打印的配置文件內容。redis

Supervisor 不會自動生成配置文件。shell

請使用命令 echo_supervisord_conf > /etc/supervisord.conf 來生成配置文件。api

部分配置文件信息表

名稱 註釋 栗子
inet_http_server[port] 內置管理後臺 *:8888
inet_http_server[username] 管理後臺用戶名 admin
inet_http_server[password] 管理後臺密碼 admin
include[files] 設置進程配置文件格式 /etc/supervisor/supervisor.d/*.ini

運行

Supervisor 啓動需加載配置文件bash

supervisord -c /etc/supervisor/supervisord.conf

中止命令是服務器

supervisorctl shutdown

從新加載配置文件swoole

supervisorctl reload

Supervisor 以 [program:[your_cli_name]] 以每段進程配置文件的開頭,your_cli_name 則是你的進程名稱,名稱會顯示在Supervisor後臺管理工具和Supervisor cli命令輸出上。咱們以運行php-fpm爲例

[program:php7]
command=php-fpm

哦呦,就是醬紫簡單。沒有過多的廢話。或者運行一段shell。

[program:echo]
command=sh echo.sh

--------------------------------

echo.sh

your_name="my name zhangsan" 
echo $your_name

固然laravel隊列也是依舊簡單

[program:laravel-worker]
command=php /home/forge/app.com/artisan queue:work sqs --sleep=3 --tries=3

固然這裏只是簡單的演示,讓你能夠快速上手,配置腳本內不單單隻有command命令。
具體可見官方文檔 http://www.supervisord.org/co...

後臺

Supervisor提供的後臺管理比較簡單

clipboard.png

大體功能有 重啓、啓動、中止進程,打印日誌,清除日誌等。基本上就這麼幾個簡單的功能,固然也沒有宕機報警,日誌報警什麼的。不過強大的Supervisor爲咱們提供了接口😄

接口

經過API能獲取基本全部的信息,例如進程列表,某個進程的狀態,進程日誌。包括對進程的重啓、中止、開啓等操做,將Supervisor完全集成到內部監控後臺也是沒有什麼問題的。

具體內容請移步官網Api文檔 http://www.supervisord.org/ap...

腳本

最後送給朋友們一個簡單的腳本,方便用於學習Supervisor

#!/bin/bash
set -x

case $1 in
    'sp')
            if [[ $2 == 'start' ]]; then
                "supervisord -c /etc/supervisor/supervisord.conf"
            elif [[ $2 == 'stop' ]]; then
                "supervisorctl shutdown"
            elif [[ $2 == 'restart' ]]; then
                "supervisorctl shutdown"
                "supervisord -c /etc/supervisor/supervisord.conf"
            elif [[ $2 == 'reload' ]]; then
                "supervisorctl reload"
            fi
        ;;
esac

你可使用這個簡單的腳本快速啓動、重啓、關閉Supervisor

sh test.sh sp start // 啓動
sh test.sh sp restart // 重啓

致謝

感謝看到這裏,但願本章能夠幫到你。謝謝

相關文章
相關標籤/搜索