2017-08-28 8 views
0

Phoenix + Elixirを使ってアプリケーションを構築し、それを蒸留所でサーバーに展開しました。 私は配備を自動化するためのbashスクリプトを作成しようとするまで、うまくいっていました、FYI:私はedeliverを試しましたが、私の必要性に合わなかったのです。 私はVPSのElixirアプリはデーモンモードのsshから起動できません

ssh [email protected]_ip -C "sudo my_app/bin/app start" 

リモートコマンドでSSHを実行するときには、起動に失敗した、試してみるが、私がログオンしたときに、私のVPS上のデーモンモードでアプリを実行し、

sudo my_app/bin/app start 

を実行する際に常に成功だ。しかしシェル画面に出力はありません。それだけではうまくいきません。

しかし、私は

ssh [email protected]_ip -C "sudo my_app/bin/app foreground" 

とフォアグラウンドモードで実行する場合は、アプリを起動すると、私はフォアグラウンドモードでnohupを使用しようとしてきたが、それはまだ実行ログを示す実行ログ を表示し成功します私は別のコマンドを実行する必要があります。

SSHリモートコマンドを実行するために必要なステップはありますか?

+0

[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のような匂いがします。単純な 'bin/app start'でリモートを走らせることは、最初は非常に悪い考えです。 'upstart'や' systemd'(あるいは別のプロセススケジューラ)を使って、起動後にアプリケーションが起動して動作するようにする必要があります。適切に設定されると、 'ssh user @ some_ip -C" sudo systemctl start app "'のようなものを実行し、現在経験している不具合はすぐに消えてしまいます。 – mudasobwa

+0

ええ、 'systemd'が私のために働いています。ありがとうございます。@ mudasobwa –

+0

こんにちは@mudasobwaさんは、回答として投稿することができますので、私はそれを受け入れられた答えとして選択することができました –

答えて

1

XY problemのような匂いがします。平文bin/app startでリモートを実行することは、最初は非常に悪い考えです。 upstartまたはsystemd(または別のプロセススケジューラ)を使用して、起動後にアプリケーションが起動して実行されるようにする必要があります。

がいったん適切に設定、あなたは

ssh [email protected]_ip -C "sudo systemctl start app" 

とあなたが現在経験がちょうど離れて行く必要がありますグリッチのようなものを実行します。

0

通常、sudoを実行するときにパスワードを入力する必要がありますか?もしそうなら、それはSSHに問題を引き起こす可能性があります。 sudoのパスワードを入力できるように、擬似的にSSHを実行することができます。つまり、ssh -t [email protected]_ip -C "sudo my_app/bin/app start"

+1

OPは 'ssh user @ some_ip -C" sudo my_app/bin/app foreground "'はうまく動作します。 – Dogbert

+0

@dogbert良い点! –

+0

ユーザは 'sudo'コマンドを実行する際にパスワードを必要としません。 前回私は' --no-ecto'コマンドで全く新しいアプリを試してみましたが、同じ問題に直面しています –

関連する問題