VPS 上的 Elixir 应用无法在守护进程模式下从 ssh 启动

Elixir app on VPS can't started from ssh on daemon mode

我已经使用 Phoenix + Elixir 构建了一个应用程序并将其部署到带有 distillery 的服务器。 一切正常,直到我尝试创建一些 bash 脚本来自动部署,仅供参考:我已经尝试过 edeliver,但它不符合我的需要。 当我登录 运行

并在我的 VPS 上尝试 运行 守护程序模式时,我总是成功
sudo my_app/bin/app start

但是,当我 运行 使用远程命令 ssh

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

启动失败,shell 屏幕上没有输出。它只是行不通。

但是,如果我 运行 在前台模式下

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

将成功启动应用程序并显示 运行ning 日志 我一直在尝试在前台模式下使用 nohup,但它仍然显示 运行ning 日志,而我需要 运行 另一个命令

是否需要执行 运行 SSH 远程命令,可能设置了一些环境?

您 运行 sudo 时通常需要输入密码吗?如果是这样,那可能会导致 SSH 出现问题。您可以尝试 运行ning SSH 与 pseudotty 这样您就可以输入 sudo 密码,即 ssh -t user@some_ip -C "sudo my_app/bin/app start"

这闻起来像 XY problem。 运行 带有普通 bin/app start 的遥控器首先是一个非常糟糕的主意。应该使用 upstartsystemd(或另一个进程调度程序)来确保应用程序启动并在启动后 运行。

正确设置后,您将执行类似

的操作
ssh user@some_ip -C "sudo systemctl start app"

您目前遇到的故障应该会消失。