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