我是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
。
任何意见将不胜感激。
谢谢汤姆·洛德,我设法做到了这一点,使部署用户可以无需密码即可执行sudo service unicorn reload
。
这里说明。
对我来说,这是较小项目中只有一名开发人员和Linux管理员的最佳解决方案,胜过Capistrano docs所说的创建没有密码的用户。
现在,按照建议,我可以使用SSH禁用根访问。
即使由于我缺乏linux安全知识,任何评论或更正也将更加准确和受欢迎。