Приложение Elixir на VPS не запускается из ssh в режиме демона

Я создал приложение с помощью Phoenix + Elixir и развернул его на сервере с винокурней. Все работало нормально, пока я не попытался создать сценарий bash для автоматизации развертывания. К вашему сведению: я пробовал edeliver, но он не соответствовал моим потребностям. Я всегда успешен, когда пытаюсь запустить приложение в режиме демона на моем VPS, когда я вошел в систему и запустил

sudo my_app/bin/app start

Но когда я запускаю ssh с удаленной командой

ssh user@some_ip -C "sudo my_app/bin/app start"

Не удалось запустить без вывода на экран оболочки. Это просто не сработало.

Но, если я бегу в режиме переднего плана с

ssh user@some_ip -C "sudo my_app/bin/app foreground"

Успешно запустите приложение и покажите журнал выполнения, который я пытался использовать nohup в режиме переднего плана, но он по-прежнему показывает текущий журнал, а мне нужно запустить другую команду

Есть ли какой-либо обязательный шаг для запуска удаленной команды SSH, может быть, какая-то среда установлена?

2 ответа

Решение

Это пахнет проблемой XY. Запуск пульта с обычным bin/app start это очень плохая идея в первую очередь. Нужно использовать либо upstart или же systemd (или другой планировщик процессов), чтобы обеспечить запуск приложения после его запуска.

После правильной настройки вы будете выполнять что-то вроде

ssh user@some_ip -C "sudo systemctl start app"

и глюк, который вы испытываете сейчас, должен просто уйти.

Вы обычно должны вводить пароль при запуске sudo? Если это так, это может вызвать проблемы с SSH. Вы можете попробовать запустить SSH с псевдотти, чтобы вы могли ввести пароль sudo, т.е. ssh -t user@some_ip -C "sudo my_app/bin/app start"

Другие вопросы по тегам