#Sidekiq 的安装,配置和部署

####安装 本文是使用的 rails 版本是 ‘4.1.7’。 添加以下 gem 到 Gemfile,详细如何创建 Sidekiq Job 可以查看 Getting Started

1
2
gem 'sidekiq', '3.3.0'
gem 'redis', '3.2.0'

####配置 Redis 创建如下文件,同时按照如下配置 Sidekiq 和 Redis 的链接,详情可 点击: >config/initializers/sidekiq.rb

1
2
3
4
5
6
7
Sidekiq.configure_server do |config|
  config.redis = { url: 'redis://localhost:6379/12' }
end

Sidekiq.configure_client do |config|
  config.redis = { url: 'redis://localhost:6379/12' }
end

6379 替换为您使用的 Redis 的接口。

####配置 Web UI 配置监测的图形界面简单如下,详细信息可以查看 官网

1
gem 'sinatra', :require => nil

在 routes.rb 文件中添加如下信息:

1
2
require 'sidekiq/web'
mount Sidekiq::Web => '/sidekiq'

采用简单的 Basic Auth 就可以完成 Web UI 权限的控制,在 config/initializers/sidekiq.rb 中添加如下代码:

1
2
3
Sidekiq::Web.use(Rack::Auth::Basic) do |user, password|
  [user, password] == ["your_username", "your_password"]
end

####部署 Sidekiq 有了 Cap Gem 的支持,虽然也很简单,可是在实际操作的时候,却不一定那么顺利。如果您碰到了问题,却找不到解决方法,可以尝试以下步骤。

添加以下代码到 Gemfile

1
2
3
group :development do
	gem 'capistrano-sidekiq', '0.4.0'
end

同时千万不要按照官方文档介绍的添加以下这段信息。会导致最新的版本安装,这个版本的 cap hooks 不能顺利被添加。文主也不知为何,或许和使用的 Capistrano 版本有关。 >github: ‘seuros/capistrano-sidekiq’

如下是开发环境中的配置文件,设置了 pid 和 log 的 path。

1
2
3
4
5
6
7
8
9
10
11
12
:concurrency: 5
:pidfile: ./tmp/pids/sidekiq.pid
:logfile: ./log/sidekiq.log 
:queues:
    - default
development:
  :verbose: true
  :concurrency: 5
staging:
  :concurrency: 10
production:
  :concurrency: 20

按照部署的惯例,pid 和 log 的文件会放在 share/tmp 和 share/log 中。可以在 config/deploy/staging.rb 和 config/deploy/production.rb 配置。

1
2
3
4
5
6
7
# 设置 soft link
set :linked_dirs, %w{tmp log}

# 配置 sidekiq 
set :sidekiq_concurrency, 20
set :sidekiq_pid, -> { File.join(shared_path, 'tmp', 'sidekiq.pid') }
set :sidekiq_log, -> { File.join(shared_path, 'log', 'sidekiq.log') }

但是 cap 部署的时候不会自动创建 tmp 和 log 文件夹,需要到服务器上手动创建。

1
2
3
cd path_to_deploy_to_share_folder
mkdir tmp
mkdir log