4

У меня есть простой сценарий выскочки:

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" admin@sample-test.com

но поскольку я запускаю приложение узла как www-data, у меня нет прав на testapp.log .

Каков наилучший подход к решению этой проблемы?

Я бы предпочел не создавать файл журнала с «www-данными» в качестве владельца, потому что я хотел бы выполнить как можно меньше шагов для установки. Я бы также предпочел не запускать приложение как «www-data» с помощью sudo:

exec sudo -u www-data node /var/testapp/app.js >> /var/log/testapp.log 2>&1

потому что, когда я делаю это, root также запускает процесс. Может быть, я ошибаюсь, но я вижу это как проблему безопасности. Если это не проблема безопасности - пожалуйста, просветите меня.

1 ответ1

3

Вы можете просто создать другую директорию в журнале dir и предоставить право владения www-данными:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .