阿里云ECS配置之supervisor


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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容