我有一个简单的新贵脚本:
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 也在运行该进程。也许我错了,但我认为这是一个安全问题。如果这不是一个安全问题 - 请告诉我。
答案1
您只需在日志目录中创建另一个目录并授予 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