ruby 製の foreman という物を使うと Procfile というファイルに書かれた内容でプロセスを起動して、個別に上げたり落としたり出来る様になります。ただしwindowsでは重くて使えない(windows上のrubyどうにかしてる)し、kazeburoさんが作ってるperl製のProcletはParallel::Preforkがwindowsで動かないので困ってました。 ここまで来たら自分で書くしかないかなーとか考えながら、C言語で書くの面倒臭いと思ったのでGo言語で書きました。
mattn/goreman - GitHub今のところ以下の様に動きます。
foreman clone written in go language
https://github.com/mattn/goreman
まず以下の様なProcfileを用意します。
web1: plackup --port 5000
web2: plackup --port 5001
このファイルのある場所で、
$ goreman start
とすると
Procfileにエントリされているプロセスを起動します。
この様に色付きで標準出力されながら起動します。
別の端末で
$ goreman run stop web1
とすると
停止し
$ goreman run start web1
とすると
再度web1に割り当てられたプロセスが起動します。
$ goreman run restart web1
もあります。rpcの警告が出てるのはそのうち直します。Windows と Linux で動作します。
今のところ、foreman の様に
.env
ファイルを読み込んだり、.foreman
ファイルに従って起動したりはしていませんが、そのうちやるかもしれません。機能はまだまだですが、そのうち便利になってく気がします。