Конфигурация моей выскочки на сервере Node.js:
start on (net-device-up and runlevel [2345] and started td-agent)
stop on runlevel [016]
respawn
env HOME="/var/nodes"
script
chdir $HOME
exec /usr/local/bin/node index.js -c app/config/live >> /var/log/node/server.log 2>> /var/log/node/server_error.log
end script
Когда я бегу:
initctl check-config node
Получил вот что:
node
start on: unknown job td-agent
Когда сервер загружается, узел не работает, но я могу запустить его вручную:
service node start
node start/running, process 1156
РЕДАКТИРОВАТЬ: Если я удалю and started td-agent
, он запускается при загрузке. Но мне нужен запуск Node после td-agent. Как я могу исправить эту проблему?
Выскочка, кажется, ничего не знает о td-agent
. Это потому, что выскочка распознает только задания, начатые выскочкой.
Наверное td-agent
запускается скриптом в /etc/init.d
. В этом случае вы не можете использовать выскочку для запуска. node
и это зависит от td-agent
.
Решение - не использовать выскочку. Вам нужно написать новый скрипт для /etc/init.d
это начинается node
.
Вы должны заставить его работать после td-agent
запустить скрипт. Когда у вас есть сценарий, используйте update-rc.d
команда, чтобы определить, когда он запускается.
Вот ссылка на пример минимального стартового скрипта. Это для liferay, но просто исправьте переменные среды и замените функции start () и stop () вашими собственными определениями. Пример сценария liferay initd.