2011-11-07 3 views
1

私はEC2上のUbuntuサーバーにnode.jsアプリケーションをデプロイしています。永遠に動作させるためにForeverを使用しています。私は、コンソールで次のように入力するとなぜ永遠にNode.JSがrc.localで動作しないのですか?

問題は、次のとおりです。

forever start ~/path/myapp.js

それだけで正常に動作します。しかし、私はスタートアップ時に自動的にアプリケーションを起動したいので、/etc/rc.localにその行を追加して、動作を停止しました。 rc.localのそれ以外のものはすべて動作します。

私はLinuxに慣れていないので、rc.localを実行しているときに重要なコンポーネントが初期化されていないことを推測します。私はその行を追加することができる別の場所がありますか?

おかげで、

答えて

1

私はそれが実際に/etc/rc.localのコマンドを実行しているユーザーとは何かを持っているかなり確信しています。 ~はユーザーのホームディレクトリを指定しているため、存在しないか、予想外の場合、またはスクリプトの実行時にロードされない場合があります。私は、次のことをしようと示唆している:

forever start /path/to/home/path/myapp.js 
+0

これは動作するようには思えません私のためには、私は見ることができますが、アプリケーションは間違いなく実行されていません。 – Joel

0

は、これは非常に返事が遅れているが、私はちょうどこれに走りました。私にとっては、forever listを使用すると何も実行されていないと言いますが、sudo forever listを実行すると、実際にサーバーが実行中であることが示されます。

これは、rc.localがrootとして実行されるため、foreverコマンドがrootとして実行され、rootだけがリスト内でそのコマンドを見ることができるからです。

私はベストプラクティスを知りませんが、私は「パイ」私は永遠にプロセスを起動したいユーザーです私の永遠に、このようなrc.localに、スクリプトを起動する呼び出すことにより、その周りになった:

それは助けている場合、これは私の要約startとスクリプトがsu pi -c './start'

である、あなたは異なる場合があります、またはあなたはおそらくrc.localを直接その内容を置くことができます。

#!/bin/sh forever start --append -l forever.log -o server.log -e error.log server.js

関連する問題