Я пытаюсь запустить приложение nodejs с forever
(forever
просто перезапускает программу в случае сбоя), но forever
сам по себе не запускается автоматически при загрузке. Итак, я использую выскочку для инициализации forever
.
Я пробовал сотни способов добиться этого (много попыток проб и ошибок), но, похоже, у меня ничего не работает. Итак, мои сценарии:
sudo start prv
Вот сценарий, который у меня есть (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
Посмотри пожалуйста:
Также,
В заключение,
Смотреть в файл /var/log/upstart/yourjob.log
для вывода работы.