2015-05-18

Ubuntu 安裝和設定 Supervisord

 Supervisord 可以做什麼呢 ? 一個是用在當服務掛掉的時候可以讓它自動再活過來,另一個,大概就是像 Docker 這樣的單一 Process 執行環境想要執行多個服務 (Daemon /Proecss) 的時候,而阿舍遇到的第一個,因為阿舍是在要安裝 Ghost 這個部落格平台來試試的時候發現的,在 Ghost 的安裝方式裡,有一種就用 Supervisord 來安裝的,阿舍看到後有點好奇,所以,就來瞭解了一下哩 ! ...



就阿舍目前的瞭解來簡單說,這個 Supervisor 的運作方式就是將所有你想要啟用的服務或程式都啟動成它的子程序 (Suprocess),所以,Supervisor 就可以很容易的掌握這些子程序的狀態,因此,可以更精準的知道這些子程是不是還活的好好的,據說會比以 pid 檔的狀態來監控的方式好哩 !

另外,由於服務是啟動在 Supervisor 的子程序裡,因此,就少去了某些情況下需要使用 root 才能啟動服務的情況,所以,這些在 Supervisor 程序下執行的服務們,就可以不需要使用 root 或 sudo 來啟動,對系統管理人員來說,自動化會比較容易而且也安全一些些哩 ! ...

還沒管理任何程式的 supervisord 的 web 管理畫面
不過,在阿舍開始說明如何安裝和設定之前,阿舍還是要先說一下,阿舍本來是用 apt-get 來安裝這個 Supervisord 的,不過,嗯 ... 它竟然沒有自動建立設定檔,再加上阿舍怎麼設定都沒有效果的情況,阿舍就只好改用 easy_install 的方式來安裝囉 ! 下面就是安裝和簡單設定的方式哩 !

+ 安裝

$ sudo apt-get python-setuptools

$ sudo easy_install supervisor

+ 設定權限
如果沒有設定正確的權限的話,可能就會出現類似像這樣的錯誤訊息「error: , [Errno 111] Connection refused: file: /usr/lib/python2.7/socket.py line: 571」,所以,
需要將目前的使用者加到安裝 supervisord 時,自動建立的 supervisor 群組。

# 以阿舍的使用者是 arthurtoday 為例
$ sudo adduser arthurtoday supervisor

+ 開啟設定檔
安裝 Supervisord 後,會建立一個設定檔在 /etc/supervisor/supervisord.conf 這個位置,不過,這裡似乎不是 Supervisord 預設會讀取設定檔的位置,不過,因為在啟動 Supervisord 的時候可以指定使用的設定檔,所以,阿舍就用了這個檔來修改囉 !

$ sudo vi /etc/supervisor/supervisord.conf

+ 設定啟用 Web 管理界面
檔案打開後,請在檔尾加入下面這幾行,如果不想要有認證機制的話,就不用加入 username 和 password 那二行 ...

[inet_http_server]
port=127.0.0.1:9001
username = arthurtoday
password = 12345678

+ 啟動 supervisor
上面都設定好之後,就可以來啟動 Supervisord 了,阿舍本來以為這個 Suprvisord 在安裝完成後就會自動啟動的,結果,並不是這樣的,是要使用者自己啟動,但是,可以被動在 Deamon 的模式,不過,下面的方式只是一般的啟動方式哩 !

$ sudo supervisord -c /etc/supervisor/supervisord.conf


+ 開啟 supervisor 的 Web 界面
如果一切都順利的話,用下面的網址就可以看到很簡單的 Supervior 的 Web 畫面,如果有設定 password 和 username,就會需要輸入帳號和密碼才可以登入使用哩 !

$ http://localhost:9001

+ 重新載設定檔
之後,有修改過設定檔,然後,讓它馬上生效的話,就要用下面第一行的指令要求 Supervisord 來重新載入設定檔,而如果有設定 username 和 password 的話,就會需要像下面的第二行一樣,用 -p 和 -u 選項來給密碼和帳號才能啟動囉 !

$ sudo supervisorctl reload

$ sudo supervisorctl -u arthurtoday -p 12345678 reload

阿舍這篇只寫到 Supervisord 的安裝和簡單設定,但是,這樣的 Supervisord 是沒什麼路用的,還需要配置程式或服務來讓它管理才會有義意,因此,阿舍會再找個實例來寫一篇應用哩 ! ...

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁