Почему Forever для Node.JS не работает в rc.local? - PullRequest
1 голос
/ 07 ноября 2011

Я развертываю приложение node.js на сервере Ubuntu в EC2 и использую Forever, чтобы он работал ... навсегда.

Проблема в том, что если я наберу в консоли следующее:

forever start ~/path/myapp.js

Работает просто отлично. Но я хочу, чтобы приложение автоматически запускалось при запуске, поэтому я добавил строку в /etc/rc.local, и оно перестало работать. Все остальное в rc.local все еще работает.

Я не знаком с Linux, поэтому я думаю, что некоторые важные компоненты не были инициализированы при запуске rc.local. Где-нибудь еще я могу добавить строку?

Спасибо

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

Я почти уверен, что это как-то связано с пользователем, который на самом деле запускает команды в /etc/rc.local.Поскольку ~ указывает домашний каталог пользователя, он может отсутствовать, отличаться от ожидаемого или просто не загружаться при запуске сценария.Я бы предложил попробовать следующее:

forever start /path/to/home/path/myapp.js
0 голосов
/ 06 декабря 2017

Это очень поздний ответ, но я столкнулся с этим. Для меня использование forever list говорит о том, что ничего не выполняется, но выполнение sudo forever list покажет, что сервер действительно работает.

Это потому, что rc.local запускается от имени пользователя root, поэтому ваша команда forever выполняется от имени пользователя root, и только root может видеть ее в списке.

Я не знаю лучших практик, но я справился с этим, вызвав мой скрипт запуска навсегда из rc.local, где «pi» - это пользователь, которого я хочу запустить процесс навсегда:

su pi -c './start'

Если это поможет, это мой сокращенный скрипт ./start, ваш может отличаться или вы можете поместить его содержимое непосредственно в rc.local:

#!/bin/sh forever start --append -l forever.log -o server.log -e error.log server.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...