使用supervisord來控制程序
阿新 • • 發佈:2018-12-18
環境:
- ubuntu:16.04
- python2.7(因為只有Python2.7支援安裝supervisor)
安裝supervisor:
安裝完成之後要手動生成配置檔案(supervisord.conf):
注意:以下所有修改後的路徑的資料夾如果不存在要自己手動建立,檔案不用,系統會自動建立
echo_supervisord_conf > /etc/supervisord.conf
這個命令會在/etc資料夾下生成一個supervisord.conf檔案,就是supervisord的配置檔案,然後這個配置檔案是需要修改的,它的很多預設檔案會建立在/tmp資料夾中,不是很合理,具體需要修改的地方有:在你的配置檔案中找到這幾句,改成你想放置的位置。
[unix_http_server] file=/root/supervisor/supervisor.sock ; the path to the socket file [supervisord] logfile=/var/log/supervisor/supervisord.log ; main log file; default pidfile=/root/supervisor/supervisord.pid ; supervisord pidfile; default supervisord.pid [supervisorctl] serverurl=unix:///root/supervisor/supervisor.sock ; use a unix:// URL for a unix socket
執行supervisord:
- 在真正應用它的管理程序的功能之前,首先應該啟動服務:supervisord -c /etc/supervisord.conf # -c 後面的位置是你開始生成配置檔案的路徑
- 執行supervisorctl status沒有報錯,就說明啟動成功
- 控制程序用到的是supervisorctl這個命令,supervisord是用來啟動服務。
- supervisorctl status 沒有輸出任何東西是因為現在你並沒有把任何服務託管給supervisor,以下舉了例子,將uwsgi託管給supervisor
將uwsgi託管給supervisor
- 編輯一個針對於此uwsgi的配置檔案,uwsgi.conf
[program:uwsgi] ;這裡的uwsgi是自定義的程序名稱
directory = /root/proj/conf ;下一句command需要用到的uwsgi.ini檔案所在的位置
command = uwsgi --ini uwsgi.ini ;表示啟動uwsgi服務的命令
autostart = true
startsecs = 5
autorestart = true
startretries = 3
user = root
redirect_stderr = true
stdout_logfile_maxbytes = 20MB
stdout_logfile_backups = 20
stdout_logfile = /etc/supervisor/log/uwsgi/face_check.log ;將這個uwsgi服務的應用日誌記錄路徑
- 修改supervisord.conf檔案,將剛剛的uwsgi.conf引入
- 在配置檔案的最後(應該是)找一下,將註釋去掉
[include]
files = /etc/supervisor/*
最後重啟一下supervisord,
常用命令
- supervisorclt status 檢視所有託管程序的狀態
- supervisorclt start name_1 或者 name_2 name_3 或者 all 開啟程序
- supervisorclt stop name_1 或者 name_2 name_3 或者 all