capistrano 使用 sudo 运行内部命令

发布于 2025-01-01 13:19:28 字数 478 浏览 2 评论 0原文

我们的 capistrano 设置是:使用普通用户 ssh,但部署到需要 sudo 权限才能创建文件的位置。

我想运行特定的 capistrano 命令 run "cd #{configuration[:releases_path]} && #{decompress(remote_filename).join(" ")} && rm #{remote_filename}"< /代码> 使用 sudo。有没有一种巧妙的方法来超越它?

def distribute!
  upload(filename, remote_filename)
  run "cd #{configuration[:releases_path]} && #{decompress(remote_filename).join(" ")} && rm #{remote_filename}"
end

Our capistrano setup is: ssh with regular user, but deploy to a location requiring sudo permissions to create files.

I want to run the specific capistrano command run "cd #{configuration[:releases_path]} && #{decompress(remote_filename).join(" ")} && rm #{remote_filename}" using sudo. Is there a neat way to over ride it?

def distribute!
  upload(filename, remote_filename)
  run "cd #{configuration[:releases_path]} && #{decompress(remote_filename).join(" ")} && rm #{remote_filename}"
end

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

栖竹 2025-01-08 13:19:28

我相信你可以在 capistrano 中使用“sudo”功能,例如

def distribute!
  upload(filename, remote_filename)
  sudo "cd #{configuration[:releases_path]} && #{decompress(remote_filename).join(" ")} && rm #{remote_filename}"
end

I believe you can use the "sudo" function inside capistrano e.g.

def distribute!
  upload(filename, remote_filename)
  sudo "cd #{configuration[:releases_path]} && #{decompress(remote_filename).join(" ")} && rm #{remote_filename}"
end
半山落雨半山空 2025-01-08 13:19:28

以下解决方法使其有效。

task :self_own_dirs do
  sudo "chown -R #{user} #{releases_path}/.."
end

在“deploy:update_code”、“deploy:self_own_dirs”之前

The following workaround made it work.

task :self_own_dirs do
  sudo "chown -R #{user} #{releases_path}/.."
end

before 'deploy:update_code', 'deploy:self_own_dirs'

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文