端末でこのコマンドを実行すると正常に動作します。
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