1. 程式人生 > >使用supervisord來控制程序

使用supervisord來控制程序

環境:

  1. ubuntu:16.04
  2. 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:

  1. 在真正應用它的管理程序的功能之前,首先應該啟動服務:supervisord -c /etc/supervisord.conf  # -c 後面的位置是你開始生成配置檔案的路徑
  2. 執行supervisorctl status沒有報錯,就說明啟動成功
  3. 控制程序用到的是supervisorctl這個命令,supervisord是用來啟動服務。
  4. 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,

常用命令

  1. supervisorclt status 檢視所有託管程序的狀態
  2. supervisorclt start name_1 或者 name_2 name_3 或者 all 開啟程序
  3. supervisorclt stop name_1 或者 name_2 name_3 或者 all