Unicornインスタンス(Ubuntu 12.04LTS)を起動する簡単なスクリプトがあります。
#!/bin/sh
case "$1" in
start)
echo "starting"
cd /path && bundle exec Unicorn -c /path/config/Unicorn.rb -D -E production
;;
stop)
echo "Stopping Unicorn Instances"
kill `cat /tmp/Unicorn.pid`
;;
restart)
echo "sending USR2 to all unicorns"
kill -s USR2 `cat /tmp/Unicorn.pid`
;;
esac
exit 0
呼び出されたときに正しく動作します:/etc/init.d/Unicorn_boot.sh start
ブート時に開始したいので、実行しました:update-rc.d -f Unicorn_boot.sh defaults
ここで再起動すると、次のエラーが発生します。
/etc/rc2.d/S20Unicorn_boot.sh: 10: /etc/rc2.d/S20Unicorn_boot.sh: bundle: not found
bundle
コマンドを確認したところ、Ruby
コマンドと同じように/usr/local/bin
にインストールされています。
ブート時にPATH
に/usr/local/bin
がまだ含まれていないようです。どうすれば修正できますか?
Initscriptは、適切なパスを自分で設定する必要があります。をセットする $PATH
スクリプトの上部にある変数:
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin