場景:當部署完.netcore程序後 使用dotnet xx.dll 後能夠運行,但關閉shell或隔斷時間會自動斷開,此時部署的.netcore程序就不能訪問了,此時須要用到Supervisor了html
Supervisor(http://supervisord.org/)是用Python開發的一個client/server服務,是Linux/Unix系統下的一個進程管理工具,不支持Windows系統。它能夠很方便的監聽、啓動、中止、重啓一個或多個進程。用Supervisor管理的進程,當一個進程意外被殺死,supervisort監聽到進程死後,會自動將它從新拉起,很方便的作到進程自動恢復的功能,再也不須要本身寫shell腳原本控制。python
一、安裝Pythonweb
yum install python-setuptools
easy_install supervisor
二、新建supervisor文件夾shell
mkdir /etc/supervisor
三、在該目錄下,生成supervisord.conf文件socket
echo_supervisord_conf > /etc/supervisor/supervisord.conf
四、新建conf.d文件夾工具
mkdir /etc/supervisor/conf.d
此時的目錄結構:spa
五、編輯supervisord.conf文件,在文件中末尾添加.net
[include] files=conf.d/*.conf
六、在conf.d中添加文件test.confrest
文件內容:日誌
[program:testservice] ;程序名稱,終端控制時須要的標識 command=dotnet test2.dll ; 運行程序的命令 directory=/home/website/test/ ; 命令執行的目錄 autorestart=true ; 程序意外退出是否自動重啓 stderr_logfile=/var/log/testservice.err.log ; 錯誤日誌文件 stdout_logfile=/var/log/testservice.out.log ; 輸出日誌文件 environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量 user=root ; 進程執行的用戶身份 stopsignal=INT
startsecs=1 ; 自動重啓間隔
七、指定supervisor配置文件
supervisord -c /etc/supervisor/supervisord.conf
八、Supervisor開機自啓動
在目錄/usr/lib/systemd/system 中新建文件supervisord.service
文件內容:
#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
九、使配置生效
systemctl daemon-reload
重啓supervisor服務
$ supervisorctl reread
若是重啓的時候報錯:
error: <class 'socket.error'>, [Errno 111] Connection refused: file: /usr/lib64/python2.6/socket.py line: 567
則說明服務還沒有啓動,先啓動便可:
sudo supervisord -c /etc/supervisor/supervisord.conf
sudo supervisorctl -c /etc/supervisor/supervisord.conf
若是修改了 /etc/supervisord.conf ,須要執行 supervisorctl reload 來從新加載配置文件,不然不會生效。
十、設置服務開機啓動
systemctl enable supervisor.service
十一、驗證一下是否爲開機啓動
systemctl is-enabled supervisord
十二、啓動服務
systemctl start supervisor.service
至此完成
參考文章:
https://www.cnblogs.com/hobinly/p/7382038.html
https://my.oschina.net/lichaoqiang/blog/1861791
https://www.cnblogs.com/sundahua/p/9149692.html
https://blog.csdn.net/chivalrousli/article/details/60324140