Я пытаюсь настроить upstart для запуска с моим сервером Node js и Socket.io.
/etc/init/quizens.conf
env NODE_BIN=/usr/bin/node
env APP_DIR=/root/quizens
env SCRIPT_FILE="quizens.js"
env LOG_FILE=/root/quizens.log
env RUN_AS="root"
start on filesystem
stop on shutdown
respawn
respawn limit 1 10
script
touch $LOG_FILE
chown $RUN_AS:$RUN_AS $LOG_FILE
chdir $APP_DIR
exec sudo -u $RUN_AS sh -c "$NODE_BIN $SCRIPT_FILE >> $LOG_FILE 2>&1"
end script
Когда я запускаю start quizens
в файле журнала, я получаю Cannot find module fb....
, даже если я просто запускаю сервер из командной строки, он работает. Модули установлены с -g, и они находятся в /usr/lib/node_modules
. Я не могу найти проблему, в то время как на моей локальной машине это работает как чудо, но не при установке его на экземпляр мягкого слоя.
Разница в том, что узел локальной машины установлен в / usr / local / bin / node, а не в / usr / bin / node. Это проблема?
РЕДАКТИРОВАТЬ: Вчера я добавил еще один IP для экземпляра. Я не знаю, имеет ли это какое-либо отношение к выскочке ...
Простое исправление, просто создайте символическую ссылку:
sudo ln -s /usr/bin/nodejs /usr/bin/node
Попробуйте удалить sudo, это может испортить ваш рабочий каталог. Раздел сценария уже запущен от имени пользователя root. Exec line может выглядеть как exec $NODE_BIN $SCRIPT_FILE >> $LOG_FILE 2>&1
. Вы также можете удалить строки с помощью touch
и chown
.