У меня есть приложение nodejs, которое я хочу автоматически перезапустить после перезагрузки сервера. Я создал скрипт для запуска приложения навсегда, как показано ниже.
#!/bin/sh
export PATH=/usr/bin:$PATH
forever start --command node --minUptime 1000 --spinSleepTime 10000 --sourceDir /etc/csc server.js >> /etc/csc/log.txt 2>&1
Я также создал запись в crontab для запуска этого скрипта после перезагрузки:
@reboot /etc/csc/csc-starter.sh
Хотя я не думаю, что часть crontab действительно актуальна, как я объясню ниже. Проблема в том, что хотя приложение nodejs запускается после перезагрузки, оно не отвечает правильно на запросы клиентов. Например, вызов URL-адреса, который должен привести к отображению основного представления приложения (в браузере), приводит к следующему выводу:
{
code: "ResourceNotFound",
message: "/"
}
Интересно, что тот же результат наблюдается, когда я запускаю стартовый скрипт вручную. Однако, если я запускаю приложение nodejs вручную с помощью:
node /etc/csc/server.js
это работает отлично. Я относительный новичок в Linux, и вы можете с уверенностью предположить, что я мог не знать о некоторых общепринятых истинах о работе в Linux, таких как, возможно, уместность размещения приложения в /etc.
Любые идеи, почему запуск приложения навсегда изменит его внутреннее поведение? Рассматриваемое приложение довольно простое. Он основан на restify и имеет несколько маршрутов REST, а также размещает статический контент, но на самом деле ничего особенного.
Спасибо.