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

时间:2017-07-12 17:33:12

标签: ssh ruby-on-rails-5 capistrano3

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

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

现在我使用了两个用户,一个是带有SSH连接的root(重新加载独角兽),但我读过这是一个不好的做法,另一个是rails默认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文件(任务):

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"

我认为我应该避免root ssh个关联,但是,我无法执行service unicorn reload

任何意见将不胜感激。

1 个答案:

答案 0 :(得分:0)

感谢Tom Lord我成功地为用于部署的用户提供了在没有密码的情况下执行void *malloc(size_t size); 的能力。

解释了

Here

对我而言,只有一个开发人员和Linux管理员的小型项目中的最佳解决方案,比创建没有密码的用户更好,因为它显示Capistrano docs

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

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