Linux Supervisor 守護進程基本配置

supervisor:C/S架構的進程控制系統,可以使用戶在類UNIX系統中監控、管理進程。經常使用於管理與某個用戶或項目相關的進程。python

組成部分
supervisord:服務守護進程
supervisorctl:命令行客戶端
Web Server:提供與supervisorctl功能至關的WEB操做界面
XML-RPC Interface:XML-RPC接口linux

查看版本信息:nginx

supervisord -v

參考地址:http://beginman.cn/linux/2015/04/06/Supervisor/
git

官網文檔地址:http://www.supervisord.orggithub

安裝:web

yum install python-setuptools

easy_install supervisor

配置:vim

一、在etc下建立目錄,並賦權限架構

mkdir -m 700 -p /etc/supervisor

二、在目錄「 /etc/supervisor」下建立配置文件app

echo_supervisord_conf > /etc/supervisor/supervisord.conf

三、修改配置文件asp.net

vim /etc/supervisor/supervisord.conf

在文件末尾添加,注意首尾需無空格,需頂格

[include]
files=/etc/supervisor/conf.d/*.conf

四、在目錄「/etc/supervisor」下建立dotnet core 進程配置文件存放目錄「conf.d」

 mkdir -m 700 /etc/supervisor/conf.d

五、建立進程配置文件,示例:Nginx和asp.net core的守護進程,關鍵配置:

mkdir -m 700 /etc/supervisor/conf.d/OneAspNetCore.conf

asp.net core

[program:OneAspNetCore]
command=dotnet OneAspNetCore.dll ; 運行程序的命令
directory=/home/webapps/aspnet/ ; 執行前要不要先cd到目錄去,通常不用
autorestart = true   ; 程序異常退出後自動重啓
autostart=true       ; 隨着supervisord的啓動而啓動
startretries = 10     ; 啓動失敗自動重試次數,默認是 3
numprocs=1           ; 啓動幾個進程
stderr_logfile=/var/log/OneAspNetCore.err.log ; 錯誤日誌文件
stdout_logfile=/var/log/OneAspNetCore.out.log ; 輸出日誌文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量
user=root ; 進程執行的用戶身份
stopsignal=KILL ; 用來殺死進程的
stopsignal=INT

注:這裏的日誌文件目錄必須存在 supervisor不會建立該日誌目錄

nginx

[program:nginx]
command=systemctl start nginx ; 運行程序的命令
directory= ; 執行前要不要先cd到目錄去,通常不用
autorestart = true   ; 程序異常退出後自動重啓
autostart=true       ; 隨着supervisord的啓動而啓動
startretries = 10     ; 啓動失敗自動重試次數,默認是 3
numprocs=1           ; 啓動幾個進程
stderr_logfile=/var/log/nginx/nginx.err.log ; 錯誤日誌文件
stdout_logfile=/var/log/nginx/nginx.out.log ; 輸出日誌文件
user=root ; 進程執行的用戶身份
stopsignal=KILL ; 用來殺死進程的
stopsignal=INT

 啓動Supervisor

supervisord -c /etc/supervisor/supervisord.conf

ps:若是服務已啓動,修改配置文件可用「 supervisorctl reload 」命令來使其生效

配置Supervisor開機啓動

新建一個「supervisord.service」文件

#supervisord service for systemd (CentOS 7.0+)
# by ET-CS (https://github.com/ET-CS)
[Unit]
Description=Supervisor daemon

[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown
ExecReload=/usr/bin/supervisorctl $OPTIONS reload
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

 

將文件拷貝至:「/usr/lib/systemd/system/」

執行命令:systemctl enable supervisord

執行命令:systemctl is-enabled supervisord #來驗證是否爲開機啓動

重啓檢測是否正常!!!

web界面配置

把配置文件中 inet_http_server 前面的分號去掉 在Supervisor中 ;是註釋的格式 默認是不開啓web界面的

[inet_http_server]         ; inet (TCP) server disabled by default
port=*:9001        ; (ip_address:port specifier, *:port for all iface)
username=user              ; (default is no username (open server))
password=123 
相關文章
相關標籤/搜索