Я получил свой собственный сервер linode на днях и переместил небольшой nodejs / express, с которым я играл, из aws linux. Все отлично работает, но если я запускаю приложение с помощью upstart, оно не запускается с нужными разрешениями и не может записывать файлы на диск. Я перепробовал все варианты сценария upstart, от имени пользователя root, моего имени пользователя, www-data и ничего не работает. Я установил 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
в оболочке, оно прекрасно работает.