Glide Note

glidenote's blog

スーパーサーバーSupervisorの導入手順メモ

スーパーサーバーSupervisorの導入方法をいつも忘れるのでメモ。ほとんど@hibomaが 社内Wikiにまとめてた内容のパクリですが、自宅サーバ構築とかで外から見ようと思っても見えないので。いつもありがとう、ひろやん!!

導入環境はScientific Linux 6.1です。(Upstart経由での起動の部分を、init経由での起動にすればCentOS 5系でも動作するかと思います)

Supervisorの導入

easy_installでも良いんですが、pipで導入

sudo yum -y install python-setuptools
sudo easy_install pip
sudo pip install supervisor

log用ディレクトリと、conf用ディレクトリを用意

デフォルトだと/tmp配下にログが吐かれるので、log用ディレクトリの作成

sudo mkdir /var/log/supervisor/

監視するデーモンごとに設定を分けるので、confディレクトリを用意

sudo mkdir /etc/supervisord.d

Supervisorの設定を用意

conf生成用のコマンドで作成

sudo echo_supervisord_conf > /etc/supervisord.conf

zshだとエラー(zsh: permission denied: /etc/supervisord.conf)が出てので、下記コマンドで生成。

sudo su - root -c "echo_supervisord_conf > /etc/supervisord.conf" 

下記のように修正をしてます。

監視するデーモンの設定は

/etc/supervisord.d/hogehoge.ini

みたいな感じで用意します。

Hesoを監視するようにした時の設定の/etc/supervisord.d/heso.iniは下記のような感じです。

Upstart経由でSupervisorを起動

Supervisor自体が落ちたら意味がないので、Upstartで経由で起動。Supervisorが落ちたらUpstartが自動で起動。
etc/init/supervisord.conf を用意

下記コマンドで起動。

sudo initctl start supervisord

psなどでプロセスを確認して起動していればOK。supervisordをkillして自動で起動してくるかも確認。

CentOS 5とかならinittabに下記のような設定をして、init経由で起動させれば良いかと。

Supervisorの各種コマンド

supervisorctl
add             -- Activates any updates in config for process/group
avail           -- Display all configured processes
clear           -- Clear process/multiple-process/all-process log files
fg              -- Connect to a process in foreground mode
help            -- Show help
maintail        -- tail of supervisor main log file
open            -- Connect to a remote supervisord process. (for UNIX domain socket, use unix:///socket/path)
pid             -- Get the PID of supervisord.
quit      exit  -- Exit the supervisor shell.
reload          -- Restart the remote supervisord.
remove          -- Removes process/group from active config
reread          -- Reload the daemon's configuration files
restart         -- Restart process or group.
shutdown        -- Shut the remote supervisord down.
start           -- Start process or groups.
status          -- Get process status info.
stop            -- Stop process or group.
tail            -- tail of process stdout
update          -- Reload config and add/remove as necessary
version         -- Show the version of the remote supervisord process

たとえばHeso用の設定を変更した場合は下記みたいな感じで設定を再読込

sudo supervisorctl reread heso

supervisorctlをzshで補完

supervisorctlコマンドをzshで補完出来るように。 functionsの下に置くと、自動で読み込まれるようになります。

sudo yum -y install hg
mkdir ~/tmp
cd ~/tmp
hg clone https://bitbucket.org/hhatto/zshcompfunc4supervisor
cd zshcompfunc4supervisor
sudo cp _supervisor* /usr/share/zsh/4.3.10/functions/

参考サイト

Comments