El script de inicio del servicio de Unicornio arroja "-su: paquete: comando no encontrado"

Recientemente creé un VPS en DigitalOcean para alojar una aplicación de rieles. Seguí su guía para configurar Unicorn con mi aplicación.https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-unicorn-and-nginx-on-ubuntu-14-04

Se produjo un problema cuando corrísudo service unicorn_appxyz start. El error dado fue-su: bundle: command not found

Rastreé el script init.d y pegué el comando de inicio del servidor evaluado en la terminal y funciona bien cuando se ejecuta bajo el usuariojoe (el usuario que instala rbenv y el propietario de la aplicación). El comando evaluado es

su - joe -c cd /home/joe/appxyz && bundle exec unicorn -c config/unicorn.rb -E production -D

Entonces sudo su - enraíz usuario y corrióservice unicorn_appxyz start El error fue, por supuesto, el mismo. Luego ejecuté el comando evaluado en la raíz y regresó con este error

The program 'bundle' is currently not installed. You can install it by typing:
apt-get install bundler

Parece que el script no está cambiando el usuario? Esta es probablemente la causa de que el unicornio no se inicie cuando inicio mi VPS.

El guión completo de unicornio está aquí:

#!/bin/sh

### BEGIN INIT INFO
# Provides:          unicorn
# Required-Start:    $all
# Required-Stop:     $all
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts the unicorn app server
# Description:       starts unicorn using start-stop-daemon
### END INIT INFO

set -e

USAGE="Usage: $0 <start|stop|restart|upgrade|rotate|force-stop>"

# app settings
USER="joe"
APP_NAME="appxyz"
APP_ROOT="/home/$USER/$APP_NAME"
ENV="production"

# environment settings
PATH="/home/$USER/.rbenv/shims:/home/$USER/.rbenv/bin:$PATH"
CMD="cd $APP_ROOT && bundle exec unicorn -c config/unicorn.rb -E $ENV -D"
PID="$APP_ROOT/shared/pids/unicorn.pid"
OLD_PID="$PID.oldbin"

# make sure the app exists
cd $APP_ROOT || exit 1

sig () {
  test -s "$PID" && kill -$1 `cat $PID`
}

oldsig () {
  test -s $OLD_PID && kill -$1 `cat $OLD_PID`
}

case $1 in
  start)
    sig 0 && echo >&2 "Already running" && exit 0
    echo "Starting $APP_NAME"
    su - $USER -c "$CMD"
    ;;
  stop)
    echo "Stopping $APP_NAME"
    sig QUIT && exit 0
    echo >&2 "Not running"
    ;;
  force-stop)
    echo "Force stopping $APP_NAME"
    sig TERM && exit 0
    echo >&2 "Not running"
    ;;
  restart|reload|upgrade)
    sig USR2 && echo "reloaded $APP_NAME" && exit 0
    echo >&2 "Couldn't reload, starting '$CMD' instead"
    $CMD
    ;;
  rotate)
    sig USR1 && echo rotated logs OK && exit 0
    echo >&2 "Couldn't rotate logs" && exit 1
    ;;
  *)
    echo >&2 $USAGE
    exit 1
    ;;
esac

Más información relacionada

Aquí están los caminos para ruby, rails y bundler bajo el usuario Joe. Debajo de la raíz no se encuentran.

joe@vps:~$ which ruby
/home/joe/.rbenv/shims/ruby
joe@vps:~$ which rails
/home/joe/.rbenv/shims/rails
joe@vps:~$ which bundle
/home/joe/.rbenv/shims/bundle

Tiene sentido que no se pueda encontrar el paquete bajo el usuario root, pero el comando de inicio debe haber cambiado al usuario 'joe' para ejecutar el comando del paquete. Esta es la parte que no entiendo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta