コマンドを置き換えるためにシステム単位のファイルを生成しようとしています。
RAILS_ENV=development bundle exec rails resque:start_workers[2]
オペレータが機械を起動したときに起動できるようにします。私が作成したファイルは次のとおりです。
[Unit]
Description=background workers
After=httpd.service solr.service
[Service]
Environment=RAILS_ENV=development
ExecStart=/usr/local/bin/bundle exec rails resque:restart_workers[2]
User=deploy
WorkingDirectory=/opt/wonda/current
Environment=rvm_bin_path=/usr/local/rvm/bin
Environment=GEM_HOME=/usr/local/rvm/gems/ruby-2.5.1
Environment=SHELL=/bin/bash
Environment=IRBRC=/usr/local/rvm/rubies/ruby-2.5.1/.irbrc
Environment=MY_RUBY_HOME=/usr/local/rvm/rubies/ruby-2.5.1
Environment=LD_LIBRARY_PATH=/opt/rh/rh-php71/root/usr/lib64
Environment=PATH=/usr/local/rvm/gems/ruby-2.5.1/bin:/usr/local/rvm/gems/ruby-2.5.1@global/bin:/usr/local/rvm/rubies/ruby-2.5.1/bin:/usr/local/rvm/bin:/opt/rh/rh-php71/root/usr/bin:/opt/rh/rh-php71/root/usr/sbin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/sbin:/usr/local/sbin:/opt/puppetlabs/bin
Environment=GEM_PATH=/usr/local/rvm/gems/ruby-2.5.1:/usr/local/rvm/gems/ruby-2.5.1@global
Environment=DBUSER=wonda
Environment=DBPASS=***************
[Install]
WantedBy=multi-user.target
実行すると、システムはワーカーを起動しようとし、さらにpidを提供しますが、実行中としてマークされません。ここにロギングを追加しましたが、出力はありません。
誰かが私が間違っていることを教えてもらえますか?
ベストアンサー1
使用しているようですが、rvm
手動で多くを設定する必要があります。rvm-exec
この目的で作られたようです。端末で作業できる場合は、rvm-exec
サービスに切り替えるときに間違いを起こす可能性が低くなります。
<残りの問題を確認>
ExecStart=/usr/local/bin/bundle exec rails resque:restart_workers[2]
それでは、どこから来たのでしょうかresque:restart_workers
?
これは、誤った準備プロトコルを使用する典型的な問題のように聞こえます。systemd
すべてのプロセスが終了すると驚きます。アイデア主なプロセスです。フォークして終了します。
可能であれば、systemdを使用して実行するコマンドは次のようになります。いいえ「バックグラウンドプロセス」にフォークします。たとえば、端末でこれを実行する場合は、フォアグラウンドで実行されるコマンドが必要です。これは暗黙の基本タイプとうまく[service]
機能しますType=simple
。設定がType=exec
より良いエラー報告を提供しますが、気に入らない理由はありません:-)。
できない場合 - またはサービスがいつ開始されるかを正確に知る必要があります。正しくReadyプロトコルを実装しますType=forking
が、それより良いものはありませんType=forking
。 。