Linux初心者がSupervisorを導入する

Linuxサーバー

CentOS 7

今回、RatchetというWebソケットのプログラムを動作させたいという目的のために、Supervisorを導入します。
(経緯はここ→Ratchetを利用してPHPでWebソケット 2 デプロイ編)

Supervisorとは、プロセスを管理してくれるツールです。
プロセスが死んでいたりしたら、復活もしてくれるようです。

Supervisor公式サイト

さて、今回はRatchetを導入することが目的なので、下記のRatchetのサイトの通りにやります。
http://socketo.me/docs/deploy

 yum install supervisor

でさくっとSupervisorをインストールします。

コンフィグファイルは、次のようにして、/etc/supervisor.conf として保存します。

 [unix_http_server]
 file = /tmp/supervisor.sock
 
 [supervisord]
 logfile          = /var/log/supervisord.log
 logfile_maxbytes = 50MB
 logfile_backups  = 10
 loglevel         = info
 pidfile          = /tmp/supervisord.pid
 nodaemon         = false
 minfds           = 1024
 minprocs         = 200
 
 [rpcinterface:supervisor]
 supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
 
 [supervisorctl]
 serverurl = unix:///tmp/supervisor.sock
 
 [program:ratchet]
 command                 = bash -c "ulimit -n 10000; cd /var/www/ratchet; php bin/push-server.php"
 process_name            = Ratchet
 numprocs                = 1
 autostart               = true
 autorestart             = true
 user                    = user1
 stdout_logfile          = /var/log/supervisor_info.log
 stdout_logfile_maxbytes = 1MB
 stderr_logfile          = /var/log/supervisor_error.log
 stderr_logfile_maxbytes = 1MB
  [program:ratchet]

にあるところが、ratchetを起動してくれたりするところですが、こうやって設定ファイルにかけるとスッキリしますよね!⊂(^-^)⊃

一点注意点は、user の部分は、rootにしていると

 CRIT Supervisor running as root (no user in config file)

上記のエラーが出るので、ユーザーを指定する必要があります。ここではuser1を指定しています。

んでもって、ドン!

 $ sudo supervisord -c supervisor.conf

これで動作しますが、設定ファイルなどを書き換えてリスタートしたいときは、そのまま上記のコマンドを実行すると

 Starting supervisor: Error: Another program is already 
 listening on a port that one of our HTTP servers is configured to use.  

というエラーが出ますので、プロセスをkillしてまた立ち上げます。
(この辺りはこのやり方であっているかどうかわかりません。)

 ps -ef | grep supervisord

とやり、出てきたプロセスの番号を確認します。

 root     17333     1  0 10:28 ?        00:00:01 /usr/bin/python /bin/supervisord -c /etc/supervisor.conf
 root     18591 18528  0 11:54 pts/10   00:00:00 grep --color=auto supervisord

上記なら、17333をkill します。

 kill -s SIGTERM 17333  

これで、動作しました![smile]

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です