systemd:起動要求が早すぎます。

systemd:起動要求が早すぎます。

端末でこのコマンドを実行すると正常に動作します。

bundle exec /home/ubuntu/.rbenv/shims/puma -C /var/www/html/mysite/config/puma.rb

ExecStartただし、システムサービスユニットファイルに入れると、次のようになります。

[Unit]
Description=Puma Application HTTP Server
After=network.target

[Service]
Type=simple
WorkingDirectory=/var/www/html/mysite

ExecStart=bundle exec /home/ubuntu/.rbenv/shims/puma -C /var/www/html/mysite/config/puma.rb


Restart=always

[Install]
WantedBy=multi-user.target

エラーが発生します。

実行可能ファイルのパスが絶対パスではありません: Bundle exec /home/ubuntu/.rbenv/sh

コマンドが「bundle exec」の代わりに絶対パスで始まるべきだと文句を言うようです。だから私はこれを試してみます:

ExecStart=/bin/bash -lc 'bundle exec /home/ubuntu/.rbenv/shims/puma -C /var/www/html/mysite/config/puma.rb'

systemctl daemon-reloadとsystemctl start puma-mysiteを実行すると、次のエラーが発生します。

Jan 03 00:07:53 ip-10-0-1-133 systemd[1]: puma-mysite.service: 起動要求が速すぎました。

1月3日 00:07:53 ip-10-0-1-133 systemd[1]: puma-mysite.service: 「終了コード」のため失敗しました。

Jan 03 00:07:53 ip-10-0-1-133 systemd[1]: Puma アプリケーション HTTP サーバーを起動できません。

コマンドはSystemDの外部で動作するため、これはSystemDの問題のようです。

答え1

また、バンドルコマンドに絶対パスを提供して機能するようにしました。

ExecStart=/home/ubuntu/.rbenv/shims/bundle exec /home/ubuntu/.rbenv/shims/puma -C /var/www/html/mysite/config/puma.rb

答え2

同様の問題に対する解決策を見つけて、これを見つけました。

別のフォーラムでは、これを解決策として提案しました。

[Service]
ExecStartPre=-/bin/sleep 5
EnvironmentFile=/etc/default/bind9

https://askubuntu.com/questions/711535/delay-startup-service https://www.digitalocean.com/community/tutorials/understanding-systemd-units-and-unit-files

返品

https://stackoverflow.com/questions/43001223/how-to-ensure-that-there-is-a-delay-before-a-service-is-started-in-systemd

ここで利用可能な解決策は次のとおりです。

ExecStartPost=/bin/sleep 30

そして

[Timer]
OnActiveSec=5sec
AccuracySec=1s

[Install]
WantedBy=timers.target

https://askubuntu.com/questions/1144764/sleep-not-working-in-service

[service] 
TimeoutSec=infinity

関連情報