Запуск rpush в качестве демона на производстве с использованием capistrano
Я настроил свое приложение rails для использования с rpush. Локально работает в разработке, используя rpush start
, Но теперь я хочу развернуть его на своем сервере EC2, используя capistrano-2.15.5.
Часть моей deploy.rb
:
after "deploy:stop", "delayed_job:stop"
after "deploy:stop", "rpush:stop"
after "deploy:start", "delayed_job:start"
after "deploy:start", "rpush:start"
after "deploy:restart", "delayed_job:restart"
after "deploy:restart", "rpush:restart"
namespace :rpush do
%w[start stop restart].each do |command|
desc "#{command} rpush deamon"
task command, roles: :app, except: {no_release: true} do
run "cd #{deploy_to}/current && bundle exec rpush #{command}"
end
end
end
Теперь проблемы
- это начинается в среде разработки. Я пытался понять эту страницу, которая говорит мне, как это сделать, но я не смог.
- Я не знаю, хранится ли pid в
/current
Дир или/shared
реж. Он должен быть в общем доступе, чтобы файл сохранялся между развертываниями.
Если кто-то сделал это (даже по-другому), пожалуйста, скажите мне, как это сделать.
Или, как я могу исправить мой рецепт кепки и /initializers/rpush
1 ответ
Решение
Для Capistrano 3:
after :finished, :restart_rpush do
on roles(:web) do
within release_path do
with rails_env: fetch(:rails_env) do
execute :bundle, :exec, "rpush stop -e #{fetch(:rails_env)}"
execute :bundle, :exec, "rpush start -e #{fetch(:rails_env)}"
end
end
end
end
Затем проверьте, что tmp
и другие каталоги связаны правильно:
set :linked_dirs, %w{log tmp/pids tmp/cache tmp/sockets vendor/bundle public/uploads}