Setup sidekiq with systemd and capistrano integration
Application
(1) Configure sidekiq.yml accordingly.
--- :concurrency: 5 staging: :concurrency: 10 production: :concurrency: 20 :queues: - critical - default - low
(2) Configure sidekiq.rb with Redis information.
Sidekiq.configure_server do |config|
config.redis = { url: 'redis://0.0.0.0:6379/0', namespace: 'myapp' }
end
Sidekiq.configure_client do |config|
config.redis = { url: 'redis://0.0.0.0:6379/0', namespace: 'myapp' }
end
(3) Add sidekiq tasks and event hooks in deploy.rb
namespace :sidekiq do
task :quiet do
on roles(:app) do
puts capture("pgrep -f 'sidekiq' | xargs kill -TSTP")
end
end
task :restart do
on roles(:app) do
execute :sudo, :systemctl, :restart, :sidekiq
end
end
end
after 'deploy:starting', 'sidekiq:quiet'
after 'deploy:reverted', 'sidekiq:restart'
after 'deploy:published', 'sidekiq:restart'Ubuntu
(1) Create systemd script for Sidekiq
$sudo pico /lib/systemd/system/sidekiq.service
[Unit] Description=sidekiq After=syslog.target network.target [Service] Type=simple WorkingDirectory=/path/to/your-app/current ExecStart=/home/ubuntu/.rbenv/shims/bundle exec sidekiq -e production -C /path/to/your-app/current/config/sidekiq.yml -L /path/to/your-app/current/log/sidekiq.log User=ubuntu Group=ubuntu UMask=0002 Environment=MALLOC_ARENA_MAX=2 # if we crash, restart RestartSec=1 Restart=on-failure # output goes to /var/log/syslog StandardOutput=syslog StandardError=syslog # This will default to "bundler" if we don't specify it SyslogIdentifier=sidekiq [Install] WantedBy=multi-user.target
Update the working directory, config file path, and log path accordingly.
(2) Deploy the app via Capistrano and validate Sidekiq is started.
Chrome On-device AI
2025-10-20 07:56:22