Deploying with capistrano. Everything goes fine, and then while deploy:start (during deploy:cold), it produces an error:
* ←[32m2013-03-14 15:03:05 executing `deploy:start'←[0m
* ←[33mexecuting "/etc/init.d/unicorn_appname start"←[0m
servers: ["XXX.XXX.131.4"]
[XXX.XXX.131.4] executing command
** [out :: XXX.XXX.131.4] sh: /etc/init.d/unicorn_appname: not found
←[2;37mcommand finished in 1572ms←[0m
failed: "sh -c '/etc/init.d/unicorn_appname start'" on XXX.XXX.131.4
The file in question exists. Here's it's contents:
#!/bin/sh
### BEGIN INIT INFO
# Provides: unicorn
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Manage unicorn server
# Description: Start, stop, restart unicorn server for a specific application.
### END INIT INFO
set -e
# Feel free to change any of the following variables for your app:
TIMEOUT=${TIMEOUT-60}
APP_ROOT=/root/apps/appname/current
PID=$APP_ROOT/tmp/pids/unicorn.pid
CMD="cd $APP_ROOT; bundle exec unicorn -D -c $APP_ROOT/config/unicorn.rb -E production"
AS_USER=root
set -u
OLD_PIN="$PID.oldbin"
sig () {
test -s "$PID" && kill -$1 `cat $PID`
}
oldsig () {
test -s $OLD_PIN && kill -$1 `cat $OLD_PIN`
}
run () {
if [ "$(id -un)" = "$AS_USER" ]; then
eval $1
else
su -c "$1" - $AS_USER
fi
}
case "$1" in
start)
sig 0 && echo >&2 "Already running" && exit 0
run "$CMD"
;;
stop)
sig QUIT && exit 0
echo >&2 "Not running"
;;
force-stop)
sig TERM && exit 0
echo >&2 "Not running"
;;
restart|reload)
sig HUP && echo reloaded OK && exit 0
echo >&2 "Couldn't reload, starting '$CMD' instead"
run "$CMD"
;;
upgrade)
if sig USR2 && sleep 2 && sig 0 && oldsig QUIT
then
n=$TIMEOUT
while test -s $OLD_PIN && test $n -ge 0
do
printf '.' && sleep 1 && n=$(( $n - 1 ))
done
echo
if test $n -lt 0 && test -s $OLD_PIN
then
echo >&2 "$OLD_PIN still exists after $TIMEOUT seconds"
exit 1
fi
exit 0
fi
echo >&2 "Couldn't upgrade, starting '$CMD' instead"
run "$CMD"
;;
reopen-logs)
sig USR1
;;
*)
echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop|reopen-logs>"
exit 1
;;
esac
Having tried to run the command through ssh (sh -c '/etc/init.d/unicorn_appname start'), I've encountered the same error.
What can be the reason?
This most probably occurs if you have symlinked from the relative path vs absolute path. Try to symlink again by providing the absolute path.
chmod +x /home/username/app/app_name/current/config/unicorn_init.sh
ln -nfs /home/username/app/app_name/current/config/unicorn_init.sh /etc/init.d/unicorn_app_name
And see if this works
Thank you all for the suggestions. The problem is finally solved. The issue turned out to be with deployment from a windows machine - .sh file had Windows-styled line endings and could not be correctly read by unix. The solution was in changing IDE settings accordingly (for Rubymine: File->Settings->Code style->General->Line separator->unix) and recreating the file. Then: git add . git commit -m "fix" git push cap deploy:setup cap deploy:cold
Done! Thanks again eveybody!
P.S.: does anybody know why can asset pipeline not work after deployment?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With