最近はホストのサーバーに仮想マシン(KVM)を複数たてて、それぞれnginx+supervisord+gunirocrn+Flaskとかnginx+unicorn+RoRみたいなウェブアプリを動かすパターンが多い。というかそれが全部。
面倒くさいのだけど、(自動化するための手間をかけるほうがよりめんどくさかったので)サービスの起動まで手でやっていたのだが、ちょっと同僚に立ち上げをお願いしなきゃいけなくなって、作業手順を繰り返してもらうのもなんか悪いなーと思ったのでサーバー立ち上げればウェブアプリが動くところまで自動で進むようにすることにした。
まぁ、今更感満載だけどね…(僕はインフラエンジニアじゃないのでそっち方面詳しくないのでそういうところまでやろうとするとコストが半端無いからなぁ)と想いつつもで今どきのウェブアプリ書く人は基本として知らなあかんのかなぁとも思うとしんどいですね。
手順としては
- ホストサーバー起動
- ifupでブリッジとイーサをアクティブにする
- GUIのVMマネージャで仮想マシンを立ち上げ
- それぞれの仮想マシンにsshで入ってサービス立ち上げ(supervisordとかを起動)
なんだけど、書き出してみるとやっぱり面倒臭い。よく手動で起動していたもんだw
2. ifupでブリッジとイーサをアクティブにする
onboot=yesをつけておく。以前試したんだけど何故かうまくいかなくて放置してたけど、これを見ながらきちんと設定したら動いた。
chkconfig NetworkManager off chkconfig network on service NetworkManager stop service network start
このあたりかな。あとfedora19だとこのあたりをいじるとsystemctlとcheckconfigが混在しててややこしい
3. GUIのVMマネージャで仮想マシンを立ち上げ
GUIのアプリを使って仮想マシンを起動してたんだけど、virsh便利。
sudo virsh autostart [vm_name]
で自動起動できるので、最初からそうしておけばよかった。すでにGUIは使っていない。
4. それぞれの仮想マシンにsshで入ってサービス立ち上げ(supervisordとかを起動)
unicorn+RoRな構成のよくあるRailsアプリだとRedmineをCentOS 7上で動かすーUnicornとNginx編を参考にsystemd用の定義ファイルを用意すればよいです。
supervisord+gunirocrn+Flaskが目下悩み中なのだけど/etc/init.dに書く方法しか見つからなかった。どうせだったらsystemctlコマンドで制御したいので引き続き調べる。