サーバー起動時にunicorn(Rails)の自動起動設定を行いたいと考えています。
そこで調べてみたところ systemctl コマンドでサービスを実行するとの方法があったので
下記のとおり、サービスファイルを追加しました。
/etc/systemd/system/unicorn.service
[Unit] Description=uni [Service] WorkingDirectory=/home/muser/test_rails PIDFile=/home/muser/test_rails/tmp/pids/unicorn.pid ExecStart=/home/muser/test_rails/bundle exec unicorn -c config/unicorn.rb -D ExecStop=/bin/kill -QUIT $MAINPID ExecReload=/bin/kill -HUP $MAINPID
その後、
$ systemctl start unicorn.service
を実行するもunicornは起動されませんでした。
その際のmessageログが以下となります。
/var/log/message
Mar 25 15:07:20 localhost systemd: Started uni. Mar 25 15:07:20 localhost systemd: Failed at step EXEC spawning /home/muser/test_rails/bundle: No such file or directory Mar 25 15:07:20 localhost systemd: unicorn.service: main process exited, code=exited, status=203/EXEC
上記の通りエラーとなり、"/home/muser/test_rails/bundle"というファイルが存在しないと表示されます。
以下試したこと
1. 空白で文字が切れていることが原因と考えたためExecStartを以下のように訂正してみた
ExecStart=/home/muser/test_rails/bundle exec unicorn -c config/unicorn.rb -D ↓ ① ExecStart=/home/muser/test_rails/"bundle exec unicorn -c config/unicorn.rb -D" ② ExecStart=/home/muser/test_rails/bundle\ exec\ unicorn -c config/unicorn.rb -D
しかし両方とも通りませんでした。
2.systemctlコマンドをつかわずにunicornの起動ができるかを試した
[root@localhost test_rails]# bundle exec unicorn -c config/unicorn.rb -D //成功
[root@localhost test_rails]# /home/muser/test_rails/bundle exec unicorn -c config/unicorn.rb -D //失敗 -> そのようなファイルやディレクトリは存在しません
ExecStartの記載方法を見るとフルパスで記載する必要があるとのことですがどのように書けばいいのかがわかりません。
ご支援のほどお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。