parse_rackup_file': файл rackup (config.ru) не читаемый Единорог (ArgumentError) Nginx

Я использовал направляющие с одним щелчком, NGINX, Единорога, капельку MySQL, настроенную для создания моего сервера, и я не могу заставить Единорога запускаться как демон. Вот отслеживание стека когда я /etc/init.d/unicorn start:

/usr/local/rvm/gems/ruby-2.0.0-p195/gems/unicorn-4.8.0/lib/unicorn/configurator.rb:659:in `parse_rackup_file': rackup file (config.ru) not readable (ArgumentError)
from /usr/local/rvm/gems/ruby-2.0.0-p195/gems/unicorn-4.8.0/lib/unicorn/configurator.rb:77:in `reload'
from /usr/local/rvm/gems/ruby-2.0.0-p195/gems/unicorn-4.8.0/lib/unicorn/configurator.rb:68:in `initialize'
from /usr/local/rvm/gems/ruby-2.0.0-p195/gems/unicorn-4.8.0/lib/unicorn/http_server.rb:100:in `new'
from /usr/local/rvm/gems/ruby-2.0.0-p195/gems/unicorn-4.8.0/lib/unicorn/http_server.rb:100:in `initialize'
from /usr/local/rvm/gems/ruby-2.0.0-p195/gems/unicorn-4.8.0/bin/unicorn:126:in `new'
from /usr/local/rvm/gems/ruby-2.0.0-p195/gems/unicorn-4.8.0/bin/unicorn:126:in `<top (required)>'
from /usr/local/rvm/gems/ruby-2.0.0-p195/bin/unicorn:23:in `load'
from /usr/local/rvm/gems/ruby-2.0.0-p195/bin/unicorn:23:in `<main>'
from /usr/local/rvm/gems/ruby-2.0.0-p195/bin/ruby_executable_hooks:15:in `eval'
from /usr/local/rvm/gems/ruby-2.0.0-p195/bin/ruby_executable_hooks:15:in `<main>'

Когда я which unicorn Я добираюсь: /usr/local/rvm/gems/ruby-2.0.0-p195/bin/unicorn который кажется, что это должно быть хорошо.

Я попробовал все, о чем я могу думать, некоторые из которых включают:

  • Создание обертки RVM => No bin path suitable for lining wrapper. Try setting 'rvm_bin_path'.
  • sudo gem install unicorn => Отказавший для создания собственных расширений... (для kgio 2.8.1). It's looking in/usr/bin/ruby1.9.1' для extconf.rb. Я даже не коснулся версии Ruby ниже, чем 2,0.
  • rvm remove 2.0.0-p353 => Набор ошибок полномочий файла. RVM не распознает что sudo средства также. Бьет меня...
  • Контакт с DigitalOcean => Они сказали для движения, спрашивают 'сообщество'.
  • Сопровождаемый несколько других учебных руководств и предложений о symlinking, помещая СВЯЗАННУЮ С ПУТЕМ информацию в файлы конфигурации, и т.д. Ничто не работало.

Это хорошо работает, если я запускаю его в фоновом режиме (-D переключатель), но процессы все еще уничтожаются, после того как я разъединяюсь от терминала. Я просто вне идей и был в этом в течение двух дней.

Сообщите мне, хотите ли Вы, чтобы я отправил какие-либо отрывки файлов или команд выполнения. Я не хотел занимать эту должность с лишней информацией.

Помогите мне, AskUbuntu, Вы - моя единственная надежда...

*РЕДАКТИРОВАНИЕ: * /etc/init.d/unicorn

set -e
NAME=unicorn
DESC="Unicorn web server"

. /lib/lsb/init-functions

if [ -f /etc/default/unicorn ]; then
  . /etc/default/unicorn
fi

export PATH=/usr/local/rvm/gems/ruby-2.0.0-p195/bin:$PATH
export GEM_HOME=/usr/local/rvm/gems/ruby-2.0.0-p195
export GEM_PATH=/usr/local/rvm/gems/ruby-2.0.0-p195:/usr/local/rvm/gems/ruby-2.0.0-p195/gems:/usr/local/rvm/gems/ruby-2.0.0-p195@global/gems

DAEMON=/usr/local/rvm/gems/ruby-2.0.0-p195/bin/unicorn

PID=${PID-/run/unicorn.pid}

run_by_init() {
    ([ "${previous-}" ] && [ "${runlevel-}" ]) || [ "${runlevel-}" = S ]
}

exit_with_message() {
  if ! run_by_init; then
    log_action_msg "$1 Not starting."
  fi
  exit 0
}
check_config() {
  if [ $CONFIGURED != "yes" ]; then
    exit_with_message "Unicorn is not configured (see /etc/default/unicorn)."
  fi
}

check_app_root() {
  if ! [ -d $APP_ROOT ]; then
    exit_with_message "Application directory $APP_ROOT is not exist."
  fi
}

set -u

    case "$1" in
      start)
            check_config
            check_app_root

            log_daemon_msg "Starting $DESC" $NAME || true
            if start-stop-daemon --start --quiet --oknodo --pidfile $PID --exec $DAEMON -- $UNICORN_OPTS; then
              log_end_msg 0 || true
            else
              log_end_msg 1 || true
            fi
                  ;;
 stop)
        log_daemon_msg "Stopping $DESC" $NAME || true
        if start-stop-daemon --stop --signal QUIT --quiet --oknodo --pidfile $PID; then
          log_end_msg 0 || true
        else
          log_end_msg 1 || true
        fi
        ;;
  force-stop)
        log_daemon_msg "Forcing stop of $DESC" $NAME || true
        if start-stop-daemon --stop --quiet --oknodo --pidfile $PID; then
          log_end_msg 0 || true
        else
          log_end_msg 1 || true
        fi
        ;;
  restart|force-reload)
        log_daemon_msg "Restarting $DESC" $NAME || true
        start-stop-daemon --stop --quiet --oknodo --pidfile $PID
        sleep 1
        if start-stop-daemon --start --quiet --oknodo --pidfile $PID --exec $DAEMON -- $UNICORN_OPTS; then
          log_end_msg 0 || true
        else
          log_end_msg 1 || true
        fi
        ;;
  reload)
        log_daemon_msg "Reloading $DESC" $NAME || true
        if start-stop-daemon --stop --signal HUP --quiet --oknodo --pidfile $PID; then
          log_end_msg 0 || true
        else
     log_end_msg 1 || true
    fi
        ;;
  reopen-logs)
        log_daemon_msg "Relopening log files of $DESC" $NAME || true
        if start-stop-daemon --stop --signal USR1 --quiet --oknodo --pidfile $PID; then
          log_end_msg 0 || true
        else
          log_end_msg 1 || true
        fi
        ;;
  status)
        status_of_proc -p $PID $DAEMON $NAME && exit 0 || exit $?
        ;;
  *)
        log_action_msg "Usage: $0 <start|stop|restart|force-reload|reload|force-stop|reopen-logs|status>" || true
        exit 1
        ;;
esac

/etc/default/unicorn

# Change parameters below to appropriate values and set CONFIGURED to yes.
CONFIGURED=yes

# Default timeout until child process is killed during server upgrade,
# it has *no* relation to option "timeout" in server's config.rb.
TIMEOUT=60

# Path to your web application, sh'ld be also set in server's config.rb,
# option "working_directory". Rack's config.ru is located here.
APP_ROOT=/home/rails/current/

# Server's config.rb, it's not a rack's config.ru
CONFIG_RB=/home/unicorn/unicorn.conf

# Where to store PID, sh'ld be also set in server's config.rb, option "pid".
PID=/home/unicorn/pids/unicorn.pid
UNICORN_OPTS="-D -c $CONFIG_RB -E production"

PATH=/usr/local/rvm/rubies/ruby-2.0.0-p195/bin:/home/unicorn/.rvm/bin:/usr/local/sbin:/usr/bin:/bin:/sbin:$
~

РЕДАКТИРОВАНИЕ 2:

Успех!

Длинный след CHOWNs и CHMODs позже (для другого Единорога регистрируются и изодромные с предварением файлы), я просто получен a master failed to start, check stderr log for details когда я пытаюсь /etc/init.d/unicorn/ но мой unicorn.stderr.log файл является пробелом. При трассировке большего количества файлов конфигурации приведите меня к некоторому журналу ошибок, в котором было сказано, что некоторый unicorn/pid/каталог был неперезаписываем. Немного CHOWN действие позже, все хорошо.

Спасибо Ben!

5
задан 23 May 2017 в 15:39

1 ответ

Когда Unicorn - или любой Rack-совместимый серверный процесс - запускается, ему нужен файл стойки (.ru), чтобы сообщить ему, что делать. Если вы не указываете на это, он не знает, что подавать. Я бы сказал, что сценарий в /etc/init.d/unicorn не содержит полный путь к файлу для вставки в ваш проект, и ему это нужно. В большинстве, если не во всех приложениях Rails, в настоящее время есть одно, включенное в состав генератора проектов Rails (config.ru).

Это руководство, которому вы следуете, предписывает вам поместить свой код в /home/rails, но в то же время размещает его файл конфигурации в другом месте (/home/unicorn/unicorn.conf). В большинстве установок, которые я видел, содержимое этого файла обычно находится в корне директории Rails, которую он обслуживает, но не имеет смысла.

Руководство имеет конфигурацию в отдельном файле на /etc/default/unicorn, который, я думаю, может быть, где лежит виновник. Можете ли вы опубликовать источник этого файла?

0
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

Похожие вопросы: