私は簡単なupstartスクリプトを持っています:
start on started network-services
respawn
respawn limit 100 5
setuid www-data
exec node /var/testapp/app.js >> /var/log/testapp.log 2>&1
post-start exec echo "Server was (re)started on $(date)" | mail -s "Crashing Server (re)starting" [email protected]
ただし、ノードアプリを「www-data」として実行しているため、testapp.log
に対する書き込み権限がありません。
これに対処するための最良のアプローチは何ですか?
セットアップの手順をできるだけ少なくしたいので、所有者として「www-data」を使用してログファイルを事前に作成したくありません。また、Sudoで「www-data」としてアプリを実行したくありません。
exec Sudo -u www-data node /var/testapp/app.js >> /var/log/testapp.log 2>&1
そうすると、rootもプロセスを実行しているからです。私は間違っているかもしれませんが、それはセキュリティの問題だと思います。セキュリティの問題ではない場合は、教えてください。
ログディレクトリに別のディレクトリを作成し、www-dataの所有権を与えることができます。
Sudo mkdir /var/log/testapp
Sudo chown www-data:www-data /var/log/testapp
/var/log/testapp
はwww-dataで書き込み可能になっているため、upstartスクリプトでは次のようになります。
exec node /var/testapp/app.js >> /var/log/testapp/app.log 2>&1