Node.jsをサーバー起動時に自動スタートさせる
デーモン化はforeverでしてるんですが、サーバーを再起動したときに自動的にスタートさせるにはどうするかについて記載します。
普段はExpressを使ってるので、app.js を起動させるのではなく、binディレクトリ配下の起動スクリプトを起動させる必要があります。
デーモン管理ツールなんかもあるんですが、インストールしたり、設定したりも大変やなぁなんて思ってたなかで、目からウロコ的なやり方が!
crontabを使います!
これだけで、あ〜あの方法使うんやなぁ!なんて思われる方もですが、ここはそのあたりは気にせずwww
“@reboot” を使います。
@hourlyとかは知ってたんですが、 @rebootは知りませんでしたorz
早い話が
$crontab -e
@reboot 〜
ってやるだけです!
具体的には?
当初
@reboot /usr/bin/forever start /hoge/sapp/bin/www
ってやったのですが、何かが見つからないとか出てきたので、シェルを組んでいます。
$vi start.sh
#!/usr/bin/bash
cd /hoge/sapp
/usr/bin/forever start bin/www
ってやって、
$ crontab -e
@reboot /hoge/start.sh
ってやっています。
というか、これだけです(^^)
ここにハマりましたorz
これで、動かない環境が出てきました。
async function main() {
}
てやってると
「functionが定義できない」ってメッセージが。。
$node -v でバージョンを確認すると 10.12.0 ってなってるんで、定義できないはずはない。。
で、よくよくみると。。。
バージョン管理のツールが入っています。。「n」ってやつ。。
#node -v ってやると。。
6.xx.xx
どうやら起動は、こちらの方を見ているようです。。
なるほどねぇ。。。