Ubuntu 11.10 を実行している開発用 VM に node.js をインストールしてセットアップした後、起動時にスーパーバイザーを自動的に起動し、必要に応じて node.js を呼び出してリロードするようにしたいと考えています。
以下のスニペットは、デフォルトのユーザーがターミナルで実行するとうまく動作しますが、ブート時に実行するにはどうすればよいですか?
cd /var/ && supervisor -w www www/myapp/app.js
ありがとう
Ubuntu 11.10 を実行している開発用 VM に node.js をインストールしてセットアップした後、起動時にスーパーバイザーを自動的に起動し、必要に応じて node.js を呼び出してリロードするようにしたいと考えています。
以下のスニペットは、デフォルトのユーザーがターミナルで実行するとうまく動作しますが、ブート時に実行するにはどうすればよいですか?
cd /var/ && supervisor -w www www/myapp/app.js
ありがとう
Upstart と monit は、起動時にすべてを実行し、ノード プロセスを維持するために非常にうまく機能します。さらに、npm を使用してインストールすることもできます。ここにツットがあります。
起動時にスーパーバイザーを実行する必要がある理由はわかりませんが (論理的には、これが必要になるのは新しいファイルをアップロードするときだけです)、新しいファイルを作成するだけで起動時に起動できると思います。 upstart config (上記と同じファウンデーションを使用):
#!upstart
description "myapp supervisor"
author "you"
start on startup
stop on shutdown
script
echo $$ > /var/run/supervise_yourprogram.pid
// does it need root access? if so...
// exec sudo -u username supervisor --restart-on-error myapp.js
supervisor --restart-on-error myapp.js
end script
pre-stop script
rm /var/run/supervise_yourprogram.pid
end script
スーパーバイザーには独自の --restart-on-error があるため、この場合に monit が必要かどうかはわかりません。
app.jsの代わりに呼び出すラッパーを使用した、まったく異なるアプローチを次に示します。とても面白そうです。
この Ubuntu ページには、Ubuntu 用のサービスを作成する方法が記載されています。