Назад | Перейти на главную страницу

Почему мое приложение nodejs навсегда не запускается с Upstart на экземпляре EC2?

Я пытаюсь запустить приложение nodejs с forever (forever просто перезапускает программу в случае сбоя), но forever сам по себе не запускается автоматически при загрузке. Итак, я использую выскочку для инициализации forever.

Я пробовал сотни способов добиться этого (много попыток проб и ошибок), но, похоже, у меня ничего не работает. Итак, мои сценарии:

Вот сценарий, который у меня есть (prv.conf, at /etc/init/prv.conf):

author "Renato Gama"
description "PRV"

start on runlevel [235]
stop on shutdown

respawn

export HOME="/home/ec2-user/prv/app"
exec su -c "/usr/bin/forever start -l forever.log -o /home/ec2-user/prv/logs/out.log -e /home/ec2-user/prv/logs/err.log --append /home/ec2-user/prv/app.js" root | logger -t PRV

НА ФАКТЕ, из командной строки я могу запустить приложение, набрав следующее (и это работает, как ожидалось):

cd /home/ec2-user/prv
sudo su -p (altough I am not using any specific env variable)
forever start -l f.log -o out.log -e err.log --append app.js

PS1 .: Я даже не тестировал при реальной загрузке, так как он даже не работает с sudo start prv
PS2 .: Если я захожу в журнал, он мало что говорит (завершился нормально). Часть журнала находится в это суть
PS3 .: После выполнения sudo start prv Я получил это

[ec2-user@ip-10-252-146-14 ~]$ sudo start prv
prv start/running, process 11477

Но когда я пытаюсь проверить, работает ли мой процесс навсегда, он говорит:

[ec2-user@ip-10-252-146-14 ~]$ sudo forever list
info:    No forever processes running

PS4: мое приложение привязывается к порту 80 вот почему мне нужен привилегированный пользователь для запуска этого.

РЕДАКТИРОВАТЬ: я почти уверен, что проблема в том, что я получаю ошибку EACCESS на порту 80

Как показано в init (5), строка экспорта недействительна (синтаксис Upstart не является оболочкой). Вам необходимо указать:

env HOME="..."
export HOME

Посмотри пожалуйста:

Также,

  • удалите респаун, пока ваша работа не будет работать так, как вы ожидаете
  • удалить 'su'
  • удалить "регистратор"

В заключение,

Смотреть в файл /var/log/upstart/yourjob.log для вывода работы.