centos7 安裝supervisor教程以及常見問題


原文作者:studytime
原文鏈接:https://www.studytime.xin/

目錄

簡介

Supervisor 是一個進程控制系統。它是一個 C/S 系統 (注意:其提供 WEB 接口給用戶查詢和控制)。它允許用戶去監控和控制在類 UNIX 系統的進程。它的目標與 launchd、daemontools 和 runit 有些相似。但是與它們不一樣的是、它不是作為 init (進程號 pid 是 1) 運行。它是被用來控制進程、並且它在啟動的時候和一般程序並無二致。

作用

你的 Nginx,Tomcat,memcache,Redis… 會崩么?
那你自己寫的服務器監測腳本呢?
好吧、不要再糾結了、交給 Supervisor 吧!
它會幫你維護這些、即使它們不小心崩了、Supervisor 會幫你看住它們、維護它們。

名詞說明

supervisor:要安裝的軟件的名稱。
supervisord:裝好supervisor軟件后,supervisord用於啟動supervisor服務。
supervisorctl:用於管理supervisor配置文件中program。

安裝和配置

前置條件安裝前需要將用戶切換為root下

安裝Linux的epel的yum源的命令,某些yum源會提示無supervisor源碼包,此時可以使用此命令

yum install epel-release

安裝

yum install -y supervisor

設置開啟自啟

systemctl enable supervisord

啟動supervisord服務

systemctl start supervisord
# 重啟
systemctl restart supervisord

查看supervisord服務狀態

ps -ef|grep supervisord 

配置

vim /etc/supervisord.conf

# 調整增加引入配置文件路徑,這個路徑放置項目對應的 supervisor 配置文件
[include]
files = /etc/supervisor/*.conf 

配置模版

[program:laravel-worker1]
process_name=%(program_name)s_%(process_num)02d
command=php /home/wwwroot/studytime.xin/artisan queue:work redis --sleep=3 --tries=3 --daemon
autostart=true
autorestart=true
user=root
numprocs=3
redirect_stderr=true
stdout_logfile=/home/baihe/worker1.log

配置說明

;*為必須填寫項
;*[program:應用名稱]
[program:cat]
;*命令路徑,如果使用python啟動的程序應該為 python /home/test.py, 
;不建議放入/home/user/, 對於非user用戶一般情況下是不能訪問
command=/bin/cat
;當numprocs為1時,process_name=%(program_name)s
;當numprocs>=2時,%(program_name)s_%(process_num)02d
process_name=%(program_name)s
;進程數量
numprocs=1
;執行目錄,若有/home/supervisor_test/test1.py
;將directory設置成/home/supervisor_test
;則command只需設置成python test1.py
;否則command必須設置成絕對執行目錄
directory=/tmp
;掩碼:--- -w- -w-, 轉換后rwx r-x w-x
umask=022
;優先級,值越高,最后啟動,最先被關閉,默認值999
priority=999
;如果是true,當supervisor啟動時,程序將會自動啟動
autostart=true
;*自動重啟
autorestart=true
;啟動延時執行,默認1秒
startsecs=10
;啟動嘗試次數,默認3次
startretries=3
;當退出碼是0,2時,執行重啟,默認值0,2
exitcodes=0,2
;停止信號,默認TERM
;中斷:INT(類似於Ctrl+C)(kill -INT pid),退出后會將寫文件或日志(推薦)
;終止:TERM(kill -TERM pid)
;掛起:HUP(kill -HUP pid),注意與Ctrl+Z/kill -stop pid不同
;從容停止:QUIT(kill -QUIT pid)
;KILL, USR1, USR2其他見命令(kill -l),說明1
stopsignal=TERM
stopwaitsecs=10
;*以root用戶執行
user=root
;重定向
redirect_stderr=false
stdout_logfile=/a/path
stdout_logfile_maxbytes=1MB
stdout_logfile_backups=10
stdout_capture_maxbytes=1MB
stderr_logfile=/a/path
stderr_logfile_maxbytes=1MB
stderr_logfile_backups=10
stderr_capture_maxbytes=1MB
;環境變量設置
environment=A="1",B="2"
serverurl=AUTO

瀏覽器查看進程信息配置說明

[inet_http_server]         ; inet (TCP) server disabled by default
port=0.0.0.0:9001          ; (ip_address:port specifier, *:port for all iface)
username=user              ; 用戶名 (default is no username (open server))
password=123               ; 密碼 (default is no password (open server))

其他常用命令

# 讀取有更新(增加)的配置文件,不會啟動新添加的程序
supervisorctl reread 

# 重啟配置文件修改過的程序
supervisorctl update 

# 啟動 larashop-worker 程序
supervisorctl start larashop-worker:* 

# 查看狀態
supervisorctl status 

常見問題以及說明

端口暫用,Error: Another program is already listening on a port that one of our HTTP servers is configured to use.

python 環境選擇上使用python2作為默認python版本

安裝啟動過程中提示無配置文件

easy_install supervisor
echo_supervisord_conf > /etc/supervisord.conf


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM