supervisor 基礎配置

supervisor:一種進程管理利器,讓程序後臺運行
類似於windows service一樣的服務,能實現監控程序狀態,異常退出是能自動啓動


1.安裝supervisor

yum install python-setuptools
easy_install supervisor  //安裝依賴

2.配置supervisor
創建目錄

mkdir /etc/supervisor

通過echo_supervisor_conf 程序(用來生成初始配置文件,文件名可自定義)來初始化一個配置文件

//自動生成一個默認的配置文件
echo_supervisor_conf > /etc/supervisor/supervisord.conf

通過vi 修改配置信息
vi /etc/supervisor/supervisord.conf

修改爲:

[include]
files = /etc/supervisor/conf.d/*.ini         ;創建一個supervisor 進程配置文件加載目錄(定位服務腳本的位置)讓supervisor自動加載改目錄下後綴爲.ini的文件作爲進程配置服務

3.爲部署項目添加進程配置文件
在/etc/supervisor/conf.d/ 創建文件main.ini

vi main.ini

[program:main]            ##自定義進程名稱
command=python xxxx     ## 程序啓動命令 
#directory=/data/webroot/xxxx  ## 命令執行的目錄 程序存放字服務器上的目錄
autostart=true             ## 在supervisor啓動是 程序是否啓動
autorestart=true        ## 程序退出後自動重啓
#startretries=5            ## 啓動失敗自動重試次數 默認爲3
startsecs=2                ## 自動重啓間隔
#user=root                ## 設置啓動進程的用戶 默認 root
#stderr_logfile=/var/log/xxx.err.log  ## 標準錯誤日誌
#stdout_logfile=/var/log/xxx.out.log  ## 標準輸出日誌
#environment=            ## 進程環境變量
#stopsignal=INT             ## 請求停止是用來殺死程序的信號

 
4.啓動服務

supervisord -c /etc/supervisor/supervisord.conf

若出現報錯:
[root@yuan system]# supervisord -c /etc/supervisor/supervisord.conf
Error: Another program is already listening on a port that one of our HTTP servers is configured to use.  Shut this program down first before starting supervisord.
For help, use /usr/bin/supervisord -h


錯誤原因是supervisor.sock這個文件會被系統自動刪除或者其他原因不存在了,刪除軟連接就可以

解決:
find / -name supervisor.sock
unlink /tmp/supervisor.sock

或者
有可能因爲一個使用supervisor配置的應用程序正在運行需執行 supervisorctl shutdown 命令終止

supervisorctl //打開命令行
ctl中: help //查看命令
ctl中: status //查看狀態
另外如果修改了 /etc/supervisor/supervisord.conf ,需要執行 supervisorctl reload 來重新加載配置文件,否則不會生效

5.配置開機自啓動
生成supervisord.service文件,保存在/usr/lib/systemd/system/
vi supervisord.service

[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

保存退出

systemctl enable supervisord
systemctl is-enabled supervisord
systemctl daemon-reload   #重新加載某個服務的配置文件,如果新安裝了一個服務,歸屬於 systemctl 管理,要是新服務的服務程序配置文件生效,需重新加載。


systemctl restart supervisord #重啓,出錯可能原因supervisor.sock,解決參考上方錯誤

 

視頻鏈接地址:https://edu.csdn.net/course/play/25611/307228

詳細配置參考地址:supervisor模塊學習使用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章