systemedで動かすためには, 設定をする必要がある.
※下記はrootユーザで実行する想定で記述しているため, 他のユーザの場合は権限設定などが必要になってくると予想される
まずは、サンプルを /usr/lib/systemd/system
に配置する.
ex) /usr/lib/systemd/system/sidekiq.service
その後, sidekiq.service
ファイルを変更する.
具体的には, sidekiq.serviceファイル内の以下のプロパティを変更する.
WorkingDirectoryをアプリケーションの場所に設定する.
僕の場合は、/usr/src/project_name
に配置していたため,
WorkingDirectory=/usr/src/project_name
と記述した.
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
上記の実行コマンドを実行するユーザを指定する.
僕の場合は, rootで実行するので, 以下のように設定.
User=root
Group=root
project_name/config/webpacker.yml
のcheck_yarn_integrity
をfalse
に設定する必要がある.
check_yarn_integrity: false
環境でyarn install --check-files
を実行しているのだが, なぜか上記をtrueにしておくとsystemctlで実行した際にこけてしまう.
インフラに詳しい方で原因が分かる方がいらっしゃいましたら, ご教示いただけますと幸いです.
※yarn自体の更新、yarn upgrade, yarn install --check-filesを環境で実行しましたがダメだった
以下のコマンドをコンソールで実行する.
$ systemctl daemon-reload
$ systemctl start sidekiq
$ systemctl enable sidekiq
Twitterフォロー待ってます!