質問: upstart node.jsはファイルを保存できません、間違った権限ですか? 先日、自分のlinodeサーバーを入手し、awslinuxから遊んでいた小さなnodejs/expressを移動しました。すべてがうまく機能しますが、upstartでアプリを起動すると、適切な権限で実行されず、ファイルをディスクに書き込むことができません。 root、ユーザー名、www-dataなど、upstartスクリプトのあらゆる種類のバリエーションを試しましたが、何も機能しません。 expressのpublicディレクトリをテストとしてでも777に設定しましたが、運がありませんでした。 sudo start now-images-managerでスタートアップジョブを開始します。 ps -efを実行すると、次の出力が得られます。root 25150 1 0 11:26 ? 00:00:00 sudo node /home/myusername/sites/now-images-manager/app.js root 25151 25150 0 11:26 ? 00:00:03 node /home/myusername/sites/now-images-manager/app.js これが私の起動スクリプトです:#!upstart description "now-images-manager startup script" author "me@me.com" start on startup stop on shutdown script export home="/root" echo $$ > /var/run/now-images-manager.pid exec sudo node /home/myusername/sites/now-images-manager/app.js >> /home/myusername/sites/now-images-manager/now-images-manager.sys.log 2>&1 # exec sudo -u myusername /usr/bin/node /home/myusername/sites/now-images-manager/app.js >> /home/myusername/sites/now-images-manager/now-images-manager.sys.log 2>&1 end script pre-start script # date format same as (new date()).toisostring() for consistency echo "[`date -u +%y-%m-%dt%t.%3nz`] (sys) starting" >> /var/log/now-images-manager.sys.log end script pre-stop script rm /var/run/now-images-manager.pid echo "[`date -u +%y-%m-%dt%t.%3nz`] (sys) stopping" >> /var/log/now-images-manager.sys.log end script ログからのサンプルは次のとおりです。downloadfilefromurl { [error: enoent, open 'public/images/tumblr_m9h1uh4ksi1qzl9k6o1_500.jpg'] errno: 34, code: 'enoent', path: 'public/images/tumblr_m9h1uh4ksi1qzl9k6o1_500.jpg' } シェルでnode app.jsを使用してアプリを起動すると、完全に正常に動作します。
回答: 問題を見つけました。ノードアプリを使用してディレクトリを作成する場合は、最初にノードアプリのディレクトリにcdする必要があります。したがって、私の起動スクリプトは次のようになります。script export home="/var/www" cd $home/mywebsite/ exec node index.js >> /var/log/node.log 2>&1 end script これをテストするには、ディレクトリを上に移動してから、ノードアプリケーションを実行してみます。上記の変更を行う前に、upstartスクリプトと同じエラーがスローされるはずです。