私はcapistranoの初心者で、この問題に数日間頭を悩ませてきたので、助けていただければ幸いです。
煩わしいセキュリティ設定があります。つまり、リモートサーバーでsshユーザーとしてcapistranoタスクを実行できません。これは、この問題のより単純なバージョンです-これは実用的な答えを持っていないようです。
編集:これをさらに掘り下げて、私は次のようなことができることがわかりました:
run "su - newuser" do |channel, stream, data|
channel.send_data("#{password}\n")
channel.send_data("rm -rf #{release_path}\n")
end }
これを使用して、デフォルトのデプロイメソッドを上書きし、必要なことのほとんどを実行できます。サーバーなどに必要なディレクトリを作成し、ssh転送を使用してsshユーザーとしてgitからプルすることができます。これが私の次の問題を引き起こします。これで、ssh_userが所有するファイルとディレクトリを含むnewuserが所有するディレクトリができました。newuserとしてsudo権限を持っていますが、ファイルをchmodする方法がわかりません。私は次のようなものを試しました:
run "su - newuser" do |channel, stream, data
channel.send_data("#{password}\n")
channel.send_data("sudo chmod 775 #{cache_path}\n")
end }
しかし、すべてがハングし、ブロックが無限ループで実行されているように見えます。明らかに、私がここで理解していないことがたくさんあり、いくつかのポインタは、たとえ良い関連性のある読み物であっても、大いに感謝されるでしょう。