如何使用Capistrano进行部署,在没有sudo和根SSH连接的情况下重新启动unicorn服务
我是Capistrano的新手,在阅读文档后,我可以部署所有应用程序文件并重新加载服务unicorn,但我认为我可以做得更好 文档中说创建一个没有密码的用户,但我尽量避免使用这个选项 现在我使用了两个用户,一个是带有SSH连接的如何使用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
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"