5

最近サーバーをセットアップしていたのですが、今日サーバーを再起動する必要がありました...その後、実行していた Node アプリがすべて実行されていないことに気付きました。Node Forever モジュールを使用してアプリを実行し続けていますが、サーバーが再起動またはシャットダウンして再び電源を入れたときに、それらを起動する必要があることに気付きました。

私はこれを行うための最良の方法を研究してきましたが、私が試みていることはうまくいかないようです. Ubuntu Server 10.04LTS リモート サーバーのフォルダーに Upstart スクリプトを作成し、/etc/init/再起動を試みましたが、何も起こらないようです。を実行しても何も表示されませんforever list

これが、今日試していた現在の Upstart スクリプトです。

#/etc/init/myapp.conf

start on (local-filesystems and net-device-up IFACE=eth0)
stop on shutdown

script

    exec sudo /usr/local/bin/node /var/www/myapp/myapp.forever.js
end script

Node スクリプトで Forever を使用するのは、希望どおりに構成する方が簡単だからです。スクリプトの外部でこれを実行すると、スクリプトが正常に実行されることが確認されています。Upstart スクリプト自体に何か問題があります。/etc/init/フォルダー内の他のすべての Upstart スクリプトと同じ権限を持っているようです。

追記として、私は StackOverflow でここで見つけることができるほとんどすべての答えを調べました。それが、現在持っているスクリプトをどのようにまとめたかということです。

アップデート:

トムの答えで、私は今試しました:

#/etc/init/myapp.conf

start on (local-filesystems and net-device-up IFACE=eth0)
stop on shutdown

exec sudo /usr/local/bin/node /var/www/myapp/myapp.forever.js

しかし、それはまだ機能していません。

そのため、サーバーを再起動したときにこれが実行されない理由がわかりません。助けてください!

4

3 に答える 3

2

これはあまり幸せな設定ではありません。upstart の仕組みは、start コマンドのプロセス ID を使用してプロセスを実行することです。Forever JS も同様に機能し、おそらく Upstart に触発されています。

upstartでforever.jsを実行しようとすると、upstartスクリプトで作成したforeverプロセスが起動直後に終了します。Upstart は、プロセスが継続して実行されることを期待しています。

upstart を使用して永久に実行しようとしたとき、upstart が永久に起動に失敗したと考えたため、5 つの異なる永久プロセスが実行されてしまい、5 回再試行しました。

于 2012-05-09T16:38:38.803 に答える
0

スタートスクリプト行なしでやってみましたか?

description "my server"
author  "name"

start on (local-filesystems and net-device-up IFACE=eth0)
stop on shutdown

#respawn if you were not using forever

exec sudo /usr/local/bin/node myapp.forever.js

ソース:http ://caolanmcmahon.com/posts/deploying_node_js_with_upstart

于 2012-03-10T12:56:35.740 に答える
0

ユーザーの crontab ファイルで @reboot ステートメントを使用することを選択しました。これは、サーバーの再起動時に永久に実行されます。

@reboot forever start app.js

追加資料 - http://www.cyberciti.biz/faq/linux-execute-cron-job-after-system-reboot/

于 2013-03-12T15:41:41.470 に答える