0

我已经用 Phoenix + Elixir 构建了一个应用程序,并将其部署到带有酒厂的服务器。一切正常,直到我尝试创建一些 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"

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

运行 SSH 远程命令是否有任何必需的步骤,可能是一些环境设置?

4

2 回答 2

1

这闻起来像XY 问题。首先,以普通方式运行遥控器bin/app start是一个非常糟糕的主意。应该使用其中一个upstartsystemd(或另一个进程调度程序)来确保应用程序在启动后能够启动并运行。

一旦正确设置,您将执行类似

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

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

于 2017-08-29T04:25:11.027 回答
0

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

于 2017-08-28T14:08:16.100 回答