2016-07-05 17 views
0

Ich versuche in Ruby on Rails Umgebung zu bauen, aber wenn ich den Einhornstatus überprüfe, gibt es mir den folgenden Fehler und ich weiß nicht, was zu tun ist. Ich habe den Pfad zum config.rb überprüft und es ist da.Ruby on rails mit Einhorn nicht lesbare Datei

/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/[email protected] 

    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 

Antwort

0

Vergewissern Sie sich, dass Sie unicorn über Befehl ausführen:

bundle exec unicorn -D -E <environment> -c config/unicorn.rb 

Und wenn es nicht funktioniert, geben Sie bitte Ihre Datei config/unicorn.rb

+0

Es funktioniert nicht: / –

0

Datei teilen Das Vorhandensein auf dem Pfad bedeutet nicht, dass es für einen bestimmten Benutzer lesbar ist. Überprüfen Sie, ob der Benutzer, unter dem Sie Einhorn betreiben, Zugriff auf die Dateien und Verzeichnisse hat. Normalerweise sind Code-Besitzer und Unicorn-Benutzer gleich, also chown -R that_username:that_username /path/to/app/source entsprechend.