關於supervisor使用的問題筆記

我的python程序是通過uwsgi跑的,然後nginx代理到uwsgi,所以使用supervisor來管理uwsgi,平時每次更新代碼都需要停掉uwsgi,然後又啓動,第一操作起來麻煩,第二就是當你uwsgi意外怠機了,你又需要重新啓動uwsgi,這裏通過supervisor進行管理,當你的uwsgi掛了,會自動重啓,提供了很多方便的地方

客戶端:
supervisorctl的使用
supervisord : 啓動supervisor
supervisorctl reload :修改完配置文件後重新啓動supervisor
supervisorctl status :查看supervisor監管的進程狀態
supervisorctl start 進程名 :啓動XXX進程
supervisorctl stop 進程名 :停止XXX進程
supervisorctl stop all:停止全部進程,注:start、restart、stop都不會載入最新的配置文件。
supervisorctl update:根據最新的配置文件,啓動新配置或有改動的進程,配置沒有改動的進程不會受影響而重啓

1、supervisord啓動報錯,以下只是一個示例,也有可能有其他的報錯
在這裏插入圖片描述

遇到此錯誤,解決方法歸總於以下幾種

(一)、uwsgi 配置文件裏面要把daemonize註釋掉,因爲通過supervisor進行管理了,所以不需要daemonize後臺運行模式,然後重啓supervisorctl reload

(二)、supervisor進程配置文件裏面改user = python(python爲你安裝supervisor的時候用的用戶)

(三)、如果是這種

Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13)
For help, use /usr/local/bin/supervisord -h

則有可能是權限問題
查看supervisord配置文件中的文件夾,樓主這裏是/var/run/
因爲supervisord的啓動用戶沒有這個文件夾的寫權限,所以我們要給權限
sudo chmod 777 /var/run

同樣報錯 IOError: [Errno 13] Permission denied: ‘/var/log/supervisord.log’
解決:sudo chmod 777 /var/log/supervisord.log

(四)、報錯Unlinking stale socket /var/run/supervisor.sock

   		 解決:
                    sudo unlink /var/run/supervisor.sock

(五)服務正常啓動,但是supervisorctl 顯示異常(可能是需要sudo supervisorctl)
直接重啓會顯示端口占用
操作流程
1、殺死supervisord進程
2、sudo fuser -k 8008/tcp
3、supervisord
(還有一種方法是殺死uwsgi進程)

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