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

问题描述 投票:0回答:1

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

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

现在,我正在使用两个用户,一个是具有SSH连接的root用户(以重新加载独角兽),但是我已经读到这是一个不好的做法,另一个是rails默认创建的Digitalocean。

我通过SSH连接到服务器。

在Capistrano文件中,我有:

production.rb:

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

和.rake文件(任务):

namespace :deploy_ds do
    task :reload_unicorn do
      on "[email protected]" 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"

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

任何意见将不胜感激。

ssh ruby-on-rails-5 capistrano3
1个回答
0
投票

谢谢汤姆·洛德,我设法做到了这一点,使部署用户可以无需密码即可执行sudo service unicorn reload

这里说明。

对我来说,这是较小项目中只有一名开发人员和Linux管理员的最佳解决方案,胜过Capistrano docs所说的创建没有密码的用户。

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

即使由于我缺乏linux安全知识,任何评论或更正也将更加准确和受欢迎。

© www.soinside.com 2019 - 2024. All rights reserved.