supervisor是管理進(jìn)程的一大殺器,就算應(yīng)用出現(xiàn)異常停止掉了,也會(huì)幫忙自動(dòng)重啟,下面我們就介紹一下安裝以及簡(jiǎn)單使用。
安裝
yum install python-setuptools
easy_install supervisor
配置
- 創(chuàng)建文件夾及配置文件
mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf
- 修改supervisord.conf的內(nèi)容
在文件結(jié)尾[include]節(jié)點(diǎn)處把;files = relative/directory/*.ini改為
files = /etc/supervisor/conf.d/*.conf
在/etc/supervisor/下創(chuàng)建conf.d文件夾,及ProjectName.conf(以項(xiàng)目名稱命名的)
編輯項(xiàng)目配置文件
[program: ProjectName]
command=dotnet ProjectName.dll ; 運(yùn)行程序的命令
directory=/root/Publishing/PublishOutput/ ; 命令執(zhí)行的目錄
autorestart=true ; 程序意外退出是否自動(dòng)重啟
autostart=true ; 是否自動(dòng)啟動(dòng)
stderr_logfile=/var/log/ProjectName.err.log ; 錯(cuò)誤日志文件
stdout_logfile=/var/log/ProjectName.out.log ; 輸出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 進(jìn)程環(huán)境變量
user=root ; 進(jìn)程執(zhí)行的用戶身份
stopsignal=INT
startsecs=1 ; 自動(dòng)重啟間隔
啟動(dòng)supervisor,并檢查進(jìn)程
supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep supervisor
常用命令
sudo service supervisor stop 停止supervisor服務(wù)
sudo service supervisor start 啟動(dòng)supervisor服務(wù)
supervisorctl shutdown #關(guān)閉所有任務(wù)
supervisorctl stop|start program_name #啟動(dòng)或停止服務(wù)
supervisorctl status #查看所有任務(wù)狀態(tài)
supervisorctl reload #修改配置文件后,重新加載生效
配置開機(jī)自啟動(dòng)
- 在/usr/lib/systemd/system目錄中添加supervisord.service
[Unit]
Description=Supervisor daemon
[Service]
Type=forking
ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf
ExecStop=/usr/bin/supervisorctl shutdown
ExecReload=/usr/bin/supervisorctl reload
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target
- 啟動(dòng)服務(wù)
systemctl enable supervisord
- 檢查
systemctl is-enabled supervisord
常見問題
- 解決unix:///tmp/supervisor.sock no such file的問題
1、打開配置文件
vim /etc/supervisor/supervisord.conf
這里把所有的/tmp路徑改掉,/tmp/supervisor.sock 改成 /var/run/supervisor.sock,/tmp/supervisord.log 改成 /var/log/supervisor.log,/tmp/supervisord.pid 改成 /var/run/supervisor.pid 要不容易被linux自動(dòng)清掉
2、修改權(quán)限
sudo chmod 777 /run
sudo chmod 777 /var/log
如果沒改,啟動(dòng)報(bào)錯(cuò) IOError: [Errno 13] Permission denied: /var/log/supervisord.log'
3、創(chuàng)建supervisor.sock
sudo touch /var/run/supervisor.sock
sudo chmod 777 /var/run/supervisor.sock
4、啟動(dòng)supervisord,注意stop之前的實(shí)例或殺死進(jìn)程
supervisord
5、啟動(dòng)報(bào)錯(cuò)
Unlinking stale socket /var/run/supervisor.sock
解決
unlink /var/run/supervisor.sock
6、非ROOT賬號(hào)運(yùn)行
···
把supervisord.conf中改成chmod=0766
然后重啟supervisord
···
yum 安裝
- yum install -y supervisor
- systemctl enable supervisord.service
- systemctl start supervisord.service