Gem Sidekiq 6.0 已经取消了 daemon pid 和 logger, 作者要求使用 systemd 了

jicheng1014 · September 16, 2019 · Last by jicheng1014 replied at September 17, 2019 · 6464 hits

最近部署的时候,发现 capistrano-sidekiq 失败了,最后发现是 sidekiq 已经升级到了 6.0. 而默认情况下是依赖 daemon 模式的

似乎 sidekiq 作者是强调 sidekiq 应该是使用 systemd 或者 upstart 来处理这种 daemon 模式,并且认为 类似 puma 也应该这么干

capistrano-sidekiq 其实也提供了 systemd 的方式

只需要

  1. 在 deploy 中先指定 set :init_system, :systemd
  2. 在具体的业务机器中执行 loginctl enable-linger USERNAME
  3. 之后 执行 bundle exec cap sidekiq:install

于是乎 就会在 USERNAME/.config/systemd/ 中创建 sidekiq.ENV.service , 由于已经执行了 loginctl enable-linger USERNAME, 则会加载这块

这个地方 我遇到了 2 个小坑

坑 1: 生成的这个配置 service name 就是 sidekiq . 如果你跟我一样一台机器跑了其他的 sidekiq , 则需要使用 set service_unit_name 指定下特殊的名称

坑 2: 因为我服务器也使用了 rvm, 所以导致了 模板生成的 ExecStart 的路径不对 所以需要修改下 set :bundler_path

懒得折腾的同学,也可以等 capistrano-sidekiq 更新。

capistrano-sidekiq 的作者说,"最近一个星期将修复 sidekiq 6.0 的问题", 然而 14 天已经过去了.....

最后,根据 sidekiq 的作者的说法 每一个开发者都需要掌握 systemd 这种方式。而对于我来说,多了解下也不是啥坏事

当然一把梭解决问题 就是改 gemfile

gem 'sidekiq', '< 6.0'

之后 bundle update sidekiq 就啥都不用改了

部署的时候才发现升级了 sidekiq, 这个升级是不是显得太随意了?😂

Reply to bestjane

都说了好久了

根据 sidekiq 的作者的说法 每一个开发者都需要掌握 systemd 这种方式

很认同哇!很多奇奇怪怪的 daemon 管理方式,都应该大一统到 systemd!

Reply to bestjane

哈哈 新开的项目就没注意

You need to Sign in before reply, if you don't have an account, please Sign up first.