Systemd サービスが rbenv 環境エラーで起動に失敗する

Systemd サービスが rbenv 環境エラーで起動に失敗する

Rails アプリを起動するためのサービスに問題があります。Ruby のインストールは rbenv 経由で管理され、サービス ファイルは次のとおりです。

[Unit]
Description=evr server boot
After=network.target
After=local-fs.target

[Service]
Type=forking
User=pi
Group=pi
WorkingDirectory=/home/pi/evr
ExecStart=/home/pi/.rbenv/bin/rbenv bundle exec rails s -b 192.168.1.66
TimeoutSec=180
RestartSec=180s
Restart=always

[Install]
WantedBy=multi-user.target

システムの起動時に、このサービスに関して次のエラーが発生します。

$ systemctl status evrserver
● evrserver.service - evr server boot
   Loaded: loaded (/etc/systemd/system/evrserver.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Wed 2019-04-03 18:34:22 BST; 2min 51s ago
  Process: 425 ExecStart=/home/pi/.rbenv/bin/rbenv bundle exec rails s -b 192.168.1.66 (code=exited, status=1/FAILURE)
   CGroup: /system.slice/evrserver.service

Apr 03 18:34:22 raspberrypi systemd[1]: Failed to start evr server boot.
Apr 03 18:34:22 raspberrypi systemd[1]: evrserver.service: Unit entered failed state.
Apr 03 18:34:22 raspberrypi systemd[1]: evrserver.service: Failed with result 'exit-code'.

PATH に問題があるようで、「rails」コマンドを実行しようとすると失敗します。これを回避して、サービスが Rails アプリを正常に起動できるようにするにはどうすればよいでしょうか?

答え1

だから簡単だったんだね? ExecStart 行の 'bundle' の前に 'exec' を忘れたようで、タイプを 'forking' ではなく 'simple' に設定する必要もあったようだ

関連情報