如何使用Capistrano进行部署,在没有sudo和根SSH连接的情况下重新启动unicorn服务

如何使用Capistrano进行部署,在没有sudo和根SSH连接的情况下重新启动unicorn服务,ssh,ruby-on-rails-5,capistrano3,Ssh,Ruby On Rails 5,Capistrano3,我是Capistrano的新手,在阅读文档后,我可以部署所有应用程序文件并重新加载服务unicorn,但我认为我可以做得更好 文档中说创建一个没有密码的用户,但我尽量避免使用这个选项 现在我使用了两个用户,一个是带有SSH连接的root(重新加载unicorn),但我知道这是一个糟糕的做法,另一个是自动创建的railsdefault Digitalocean 我通过SSH将两者连接到服务器 在Capistrano文件中,我有: production.rb: set :deploy_to, "/h

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

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

现在我使用了两个用户,一个是带有SSH连接的
root
(重新加载unicorn),但我知道这是一个糟糕的做法,另一个是自动创建的
rails
default Digitalocean

我通过SSH将两者连接到服务器

在Capistrano文件中,我有:

production.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文件(任务):

我想我应该避免
root
ssh
连接,但是这样我就不能执行
服务unicorn reload

如有任何意见,我们将不胜感激。

感谢我成功地做到了这一点,让用于部署的用户能够无需密码执行
sudo service unicorn reload

这是解释

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

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


尽管任何评论或更正都会更加准确和受欢迎,但由于我缺乏linux安全知识

您可以将rails用户配置为具有无密码sudo,仅用于unicorn命令?是的,这可能是一个解决方案,我不知道这是可能的,我在这里找到了如何执行dat的方法:
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"