Приложение 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"