如何使用Capistrano进行部署,在没有sudo和rootSSH连接的情况下重新启动独角兽服务



我是 Capistrano 的新手,在阅读文档后,我可以部署所有应用程序文件并service unicorn reload,但我认为我可以做得更好。

文档说要创建一个没有密码的用户,但我尽量避免使用此选项。

现在我正在使用两个用户,一个是带有SSH连接(重新加载独角兽(root,但我读到这是一种不好的做法,另一个是默认railsDigitalocean自动创建的。

我通过SSH连接到服务器。

在卡皮斯特拉诺文件中,我有:

生产.rb:

set :deploy_to, "/home/rails/www/digitalshelving"
role :web, %w{rails@xx.xxx.xxx.xx}
server "xx.xxx.xxx.xx", user: "rails", roles: %w{web}

还有一个 .rake 文件(任务(:

namespace :deploy_ds do
task :reload_unicorn do
on "root@xx.xxx.xxx.xx" do
execute :service, "unicorn reload"
end
end
task :upload_git do
run_locally do
# Git add + commit + push
end
end
end
before "deploy:starting", "deploy_ds:upload_git"
after "deploy:finished", "deploy_ds:reload_unicorn"

我认为我应该避免rootssh连接,但是,我无法执行service unicorn reload.

任何意见将不胜感激。

谢谢汤姆·洛德,我设法做到了,为用于部署的用户提供了在没有密码的情况下执行sudo service unicorn reload的能力。

这里解释一下。

对我来说,在只有一个开发人员和 Linux 管理员的小型项目中,这是最好的解决方案,比创建一个没有密码的用户要好,因为它说 Capistrano 文档。

现在我可以按照建议使用 SSH 停用根访问权限。

即使任何评论或更正都会更准确和受欢迎,因为我缺乏 Linux 安全知识

最新更新