sidekiq

Amazon Linux2でSidekiqをsystemctlで実行(デーモン化)する

2020/12/14

sidekiq.serviceを設定する

systemedで動かすためには, 設定をする必要がある.
※下記はrootユーザで実行する想定で記述しているため, 他のユーザの場合は権限設定などが必要になってくると予想される

sidekiq.serviceを配置する

まずは、サンプル/usr/lib/systemd/system に配置する.

ex) /usr/lib/systemd/system/sidekiq.service

その後, sidekiq.service ファイルを変更する.
具体的には, sidekiq.serviceファイル内の以下のプロパティを変更する.

  • WorkingDirectory
  • ExecStart
  • User
  • Group

WorkingDirectory

WorkingDirectoryをアプリケーションの場所に設定する.
僕の場合は、/usr/src/project_name に配置していたため,
WorkingDirectory=/usr/src/project_name と記述した.

ExecStart

ExecStartには, sidekiqを起動する実行コマンドを記述する.

僕はRubyをrbenvで管理していたため, bundleの指定は
/root/.rbenv/shims/bundle と設定した.
※絶対パスで指定する必要があるので注意

僕の場合は, sidekiqの設定ファイルも読み込ませたかったため, 最終的には以下のように設定.

ExecStart=/root/.rbenv/shims/bundle exec sidekiq -C /usr/src/project_name/config/sidekiq.yml

※本番環境などで動かす場合は, 環境情報も追加する必要がある

ExecStart=/root/.rbenv/shims/bundle exec sidekiq -C /usr/src/project_name/config/sidekiq.yml -e production

User, Group

上記の実行コマンドを実行するユーザを指定する.
僕の場合は, rootで実行するので, 以下のように設定.

User=root
Group=root

webpacker.ymlの修正

project_name/config/webpacker.ymlcheck_yarn_integrityfalse に設定する必要がある.

check_yarn_integrity: false 

環境でyarn install --check-files を実行しているのだが, なぜか上記をtrueにしておくとsystemctlで実行した際にこけてしまう.
インフラに詳しい方で原因が分かる方がいらっしゃいましたら, ご教示いただけますと幸いです.

※yarn自体の更新、yarn upgrade, yarn install --check-filesを環境で実行しましたがダメだった

systemdに設定

以下のコマンドをコンソールで実行する.

$ systemctl daemon-reload
$ systemctl start sidekiq
$ systemctl enable sidekiq

Twitterフォロー待ってます!