I'm trying to build in ruby on rails environment but when I check the unicorn status it gives me the following error and I don't know what to do. I checked the path to the config.rb
and it's there.
/usr/local/rvm/gems/ruby-2.2.2/gems/unicorn-5.1.0/lib/unicorn/configurator.rb:644:in `parse_rackup_file': rackup file (status) not readable (ArgumentError)
from /usr/local/rvm/gems/ruby-2.2.2/gems/unicorn-5.1.0/lib/unicorn/configurator.rb:74:in `reload'
from /usr/local/rvm/gems/ruby-2.2.2/gems/unicorn-5.1.0/lib/unicorn/configurator.rb:65:in `initialize'
from /usr/local/rvm/gems/ruby-2.2.2/gems/unicorn-5.1.0/lib/unicorn/http_server.rb:76:in `new'
from /usr/local/rvm/gems/ruby-2.2.2/gems/unicorn-5.1.0/lib/unicorn/http_server.rb:76:in `initialize'
from /usr/local/rvm/gems/ruby-2.2.2/gems/unicorn-5.1.0/bin/unicorn:126:in `new'
from /usr/local/rvm/gems/ruby-2.2.2/gems/unicorn-5.1.0/bin/unicorn:126:in `<top (required)>'
from /usr/local/rvm/gems/ruby-2.2.2/bin/unicorn:23:in `load'
from /usr/local/rvm/gems/ruby-2.2.2/bin/unicorn:23:in `<main>'
from /usr/local/rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `eval'
from /usr/local/rvm/gems/ruby-2.2.2/bin/ruby_executable_hooks:15:in `<main>'
Unicorn config
#!/bin/bash
### BEGIN INIT INFO
# Provides: unicorn
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: unicorn initscript
# Description: Unicorn is an HTTP server for Rack application
### END INIT INFO
# based on http://gist.github.com/308216 by http://github.com/mguterl
#
## A sample /etc/unicorn/my_app.conf
##
## RAILS_ENV=production
## RAILS_ROOT=/var/apps/www/my_app/current
## PID=$RAILS_ROOT/tmp/unicorn.pid
## START_CMD="bundle exec unicorn"
## USER="www-data"
#PATH=/usr/local/bin:/usr/bin:/bin
set -e
sig () {
test -s "$PID" && kill -$1 `cat "$PID"`
}
oldsig () {
test -s "$OLD_PID" && kill -$1 `cat "$OLD_PID"`
}
run_cmd() {
if [ -z "$SUDO" ]; then
$CMD
else
$SUDO "$CMD"
fi
}
cmd () {
case $1 in
start)
sig 0 && echo >&2 "Already running" && return
echo "Starting"
run_cmd
;;
stop)
sig QUIT && echo "Stopping" && return
echo >&2 "Not running"
;;
force-stop)
sig TERM && echo "Forcing a stop" && return
echo >&2 "Not running"
;;
restart|reload)
sig USR2 && sleep 5 && oldsig QUIT && echo "Killing old master" `cat $OLD_PID` && return
echo >&2 "Couldn't reload, starting '$CMD' instead"
run_cmd
;;
upgrade)
sig USR2 && echo Upgraded && return
echo >&2 "Couldn't upgrade, starting '$CMD' instead"
run_cmd
;;
rotate)
sig USR1 && echo rotated logs OK && return
echo >&2 "Couldn't rotate logs" && return
;;
status)
sig 0 && echo >&2 "Already running" && return
echo >&2 "Not running" && return
;;
*)
echo >&2 "Usage: $0 <start|stop|restart|upgrade|rotate|force-stop>"
return
;;
esac
}
setup () {
# echo -n "$RAILS_ROOT: "
cd $RAILS_ROOT || exit 1
"/usr/local/rvm/scripts/rvm"
#/usr/local/rvm/environments/ruby-1.9.2-p290@hacfest
if [ -z "$PID" ]; then
PID=$RAILS_ROOT/tmp/pids/unicorn.pid
fi
# if [ -z "$DATABASE_URL" ]; then
# DATABASE_URL=null
# fi
# export DATABASE_URL
export PID
export OLD_PID="$PID.oldbin"
export RAILS_ROOT
if [ -z "$START_CMD" ]; then
START_CMD="bundle exec unicorn"
fi
CMD="cd $RAILS_ROOT && $START_CMD -c $UNICORN_CONFIG -E $RAILS_ENV -D"
export CMD
echo "CMD: " $CMD
SUDO=""
# echo who: `whoami`
# echo user $USER
if [ "$USER" != `whoami` ]; then
SUDO="sudo -u $USER -s -H $RUNSHELL -c"
else
SUDO="$RUNSHELL -c"
fi
export SUDO
# echo "SUDO: "$SUDO
# echo $SHELL
}
start_stop () {
# either run the start/stop/reload/etc command for every config under /etc/unicorn
# or just do it for a specific one
# $1 contains the start/stop/etc command
# $2 if it exists, should be the specific config we want to act on
if [ -f "/etc/unicorn/$2.conf" ]; then
. /etc/unicorn/$2.conf
export UNICORN_CONFIG="/etc/unicorn/$2.unicorn.rb"
setup
cmd $1
else
for CONFIG in /etc/unicorn/*.conf; do
# import the variables
export UNICORN_CONFIG=`echo ${CONFIG} | sed 's/conf/unicorn.rb/'`
. $CONFIG
setup
# run the start/stop/etc command
cmd $1
unset PID
done
fi
}
ARGS="$1 $2"
start_stop $ARGS
Make sure that you run unicorn
via command:
bundle exec unicorn -D -E <environment> -c config/unicorn.rb
And if it doesn't work, please share your file config/unicorn.rb
File being present at path does not mean it is readable by particular user. Check that user that you're running unicorn under has access to the files and directories. Usually code owner and unicorn user are the same, so chown -R that_username:that_username /path/to/app/source
accordingly.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.