Node.js
supervisor
swagger

supervisor - http-serverで動かすswagger-uiを永続化する

More than 1 year has passed since last update.

やったこと

swagger-uiをnodeのhttp-serverで動かしていたものを
supervisor使って勝手に立ち上がるようにした

環境

  • Mac OS X
  • node v8.4.0

手順

http-serverのインストール

$ npm install -g http-server

swagger-uiを持ってくる

$ cd path/to
$ git clone https://github.com/swagger-api/swagger-ui
$ cd swagger-ui/dist

dist/をルートにして動かします

$ http-server -p 9090
Starting up http-server, serving ./
Available on:
  http://127.0.0.1:9090
  http://*.*.*.*:9090 # macに振られているIP

これで、swagger-uiにアクセスすることができるようになりました。
今回はこのプロセスを永続化したいわけです

supervisorのインストール

この方のdocを参考にしてすんなり行きました

https://gist.github.com/yoggy/21230e5eae5e7ee7ea59

永続化するプロセスの設定ファイルを作成

$ /usr/local/etc/supervisor/conf.d
$ sudo vi swagger-ui.conf
$ cat swagger-ui.conf
[program:swagger-ui] 
directory=/path/to/swagger-ui/dist
command=http-server -p 9090
numprocs=1 
autostart=true
autorestart=true
user=user ; 実行ユーザー
redirect_stderr=true
stdout_logfile=/var/log/supervisor/swagger-ui.log

supervisorに設定を再読込させる

$ supervisorctl
supervisor>
# 設定読み込み
supervisor> reread
swagger-ui: available # conf.dに設定したプロセスが表示される

# 再起動
supervisor> reload
Really restart the remote supervisord process y/N? y
Restarted supervisord

# 確認
supervisor> status
swagger-ui                       RUNNING   pid 724, uptime 0:00:03

再起動するのかテスト

$ ps ax | grep http-server
 1198   0.0  0.0  2452260    832 s010  S+    2:58PM   0:00.01 grep http-server
 1035   0.0  0.1  3041256  11824   ??  S     2:50PM   0:00.27 node ~/.nvm/versions/node/v8.4.0/bin/http-server -p 9090
$ pgrep node
1035
$ pgrep node | xargs kill -9
$ ps ax | grep http-server | grep -v grep
 1276   0.0  0.3  3041256  22556   ??  S     3:00PM   0:00.26 node ~/.nvm/versions/node/v8.4.0/bin/http-server -p 9090

あたらしくプロセスIDが振られているので勝手に立ち上がっていることが確認できました