端末でこのコマンドを実行すると正常に動作します。
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
返品
ここで利用可能な解決策は次のとおりです。
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