Не удается заставить мой скрипт Upstart запускать Node.js и Forever при перезапуске сервера - PullRequest
5 голосов
/ 10 марта 2012

Я недавно настраивал свой сервер, и сегодня мне пришлось его перезапустить ... потом я понял, что все мои приложения Node, которые у меня работали, больше не работают.Я использую модуль Node Forever для поддержания работоспособности приложений, но потом я понял, что мне по-прежнему нужно, чтобы они запускались, когда мой сервер перезапускается или выключается и снова включается.

Я искал лучший способсделай это, но то, что я пытаюсь, просто не работает.Я создал сценарий Upstart в своей папке /etc/init/ на удаленном сервере Ubuntu Server 10.04LTS и попытался перезагрузить компьютер, и он, похоже, ничего не делает.Когда я запускаю forever list.

, ничего не отображается в списке. Вот мой текущий скрипт Upstart, который я пробовал сегодня:

#/etc/init/myapp.conf

start on (local-filesystems and net-device-up IFACE=eth0)
stop on shutdown

script

    exec sudo /usr/local/bin/node /var/www/myapp/myapp.forever.js
end script

Я использую Forever в скрипте Node, так как мне прощенастроить его так, как я хочу.Подтверждено, что сценарий работает нормально, если я делаю это вне сценария, в самом сценарии Upstart что-то не так.Кажется, что у него те же разрешения, что и у всех других сценариев Upstart в папке /etc/init/.

В качестве дополнительной заметки я рассмотрел почти все ответы, которые я мог найти здесь, в StackOverflow, и что это как ясобрал сценарий, который у меня есть на данный момент.

ОБНОВЛЕНИЕ:

С ответом Тома я сейчас попробовал:

#/etc/init/myapp.conf

start on (local-filesystems and net-device-up IFACE=eth0)
stop on shutdown

exec sudo /usr/local/bin/node /var/www/myapp/myapp.forever.js

Но этовсе еще не работает.

Так что я не знаю, почему это не работает, когда я перезагружаю свой сервер.Пожалуйста, помогите!

Ответы [ 3 ]

2 голосов
/ 09 мая 2012

Это не очень удачная настройка.Способ запуска upstart состоит в том, что он запускает ваш процесс, используя его с помощью идентификатора процесса для команды запуска.Forever JS работает аналогично, вероятно, его вдохновил Upstart.

Когда вы пытаетесь запустить forever.js с upstart, процесс навсегда, который вы создаете в сценарии upstart, завершается сразу после запуска.Upstart рассчитывает на продолжение процесса.

Когда я пытался работать вечно, используя upstart, я сталкивался с пятью разными процессами навсегда, потому что upstart думал, что он не запустился вечно, и он повторил попытку пять раз.

0 голосов
/ 12 марта 2013

Я решил использовать оператор @reboot в файле crontab пользователя, который будет выполняться вечно при перезапуске сервера.

@reboot forever start app.js

Дополнительное чтение - http://www.cyberciti.biz/faq/linux-execute-cron-job-after-system-reboot/

0 голосов
/ 10 марта 2012

Вы пытались сделать это без строк сценария запуска?

description "my server"
author  "name"

start on (local-filesystems and net-device-up IFACE=eth0)
stop on shutdown

#respawn if you were not using forever

exec sudo /usr/local/bin/node myapp.forever.js

Источник: http://caolanmcmahon.com/posts/deploying_node_js_with_upstart

...