Apache +パッセンジャーを搭載したサーバーがあります。
本番環境でsidekiq
を実行するにはどうすればよいですか?実行に必要な構成
bundle exec sidekiq
ありがとう
bundle exec sidekiq -d -L log/sidekiq.log -C config/sidekiq.yml -e production
-d
、プロセスのデーモン化
-L
、書き込み可能なログファイルへのパス
-C
、YAML設定ファイルへのパス
-e
、アプリケーション環境
Daemonization -dフラグを使用するよりも優れたソリューションは、OSが提供するプロセススーパーバイザーを活用することです。これは、 sidekiq gemのwikiからの推奨事項 です:
-dフラグを使用せず、代わりにsystemdやupstartなどのプロセススーパーバイザーを使用してSidekiq(またはその他のサーバーデーモン)を管理することを強くお勧めします。これにより、何らかの理由でSidekiqがクラッシュした場合にすぐに再起動します。
Wikiは、 リポジトリの「examples」ディレクトリ にあるupstartとsystemdの両方のサンプル設定ファイルを提供します。
[〜#〜] note [〜#〜]CentOS 7サーバーでは、rvm(Rubyバージョンマネージャー)を使用しています。 systemdスクリプト(/etc/systemd/system/sidekiq.service)がsidekiqを確実に開始および停止できるようにするために、my Rubyおよび/またはgemsetのパスは将来変更されます。最も重要なディレクティブは「ExecStart」であり、私のスクリプトでは次のようになります。
ExecStart=/usr/local/rvm/wrappers/surveil/bundler exec sidekiq -e production -L log/sidekiq.log -C config/sidekiq.yml
パス「/ usr/local/rvm/wrappers/surveil」の一部は、実際にはシンボリックリンクであり、展開中に 'rvm alias' を使用して再作成し、常にそれが指すようにしますアプリのRubyバージョンとgemset、どちらもデプロイ間で実行可能に変更される可能性があります。これは、デプロイ中に実行され、以下と同等のrakeタスクを作成することで実現されます。
rvm alias delete surveil
rvm alias create surveil Ruby-#{new_Ruby_version}@#{new_gemset_name}
展開中にこのエイリアス/シンボリックリンクを設定することにより、systemdスクリプトを安全にそのままにしておくことができ、正常に機能し続けます。これは、パス「/ usr/local/rvm/wrappers/surveil/bundler」が常に正しいバージョンのバンドラーを指しているため、アプリケーションの構成済みRuby/gem環境でターゲットを実行するバンドラーの魔法の恩恵を受けるためです。
Sidekiqは、起動時に-d引数を渡すことにより、バックグラウンドプロセス(デーモン)として起動できるはずです。
bundle exec sidekiq -d
。
この答えは今はうまくいくはずですが、何らかの理由でsidekiqプロセスがクラッシュした場合、プロセスを手動で再起動する必要があることに注意してください。本番環境でsidekiqを実行するためのより堅牢な方法を見つけるための良い出発点はこちらです: https://github.com/mperham/sidekiq/wiki/Deployment