Как запустить сервер Redis и сервер Juggernaut в рабочем режиме

Я использую push-сервер juggernaut. Как запустить Redis и Juggernaut в производственном режиме, потому что я

 juggernaut

or

redis-server will keep on showing me log etc.

Я использую рубин на рельсах 3.

ИЗМЕНИТЬ

Я следовал этим двум руководствам, чтобы настроить juggernaut и redis на рабочем сервере

Команды терминала.

Похоже, что оба сервера теперь работают без сбоев. Но как я могу получить доступ

     :8080/application.js for juggernaut. 

Я пытался

   my_ip:8080/application.js but nothing. 

Для хостинга я использую Linode.

ИЗМЕНИТЬ2

Когда я пытаюсь остановить/запустить сервер Redis, он выдает мне вывод, например:

  Starting/Stopping redis-server: redis-server.

Но ничего, когда я делаю то же самое для Джаггернаута. Проверьте скриншот.

введите здесь описание изображения

ИЗМЕНИТЬ

Я не вижу никакого журнала для juggernaut. Есть один для Redis, но ничего для juggernaut.

введите здесь описание изображения

ИЗМЕНИТЬ

  1. Права доступа исполняемого файла к файлу /etc/init.d/juggernaut -- ДА

        -rwxr-xr-x 1 fizzy fizzy 1310 Sep 19 11:06 juggernaut
    
  2. PIDFILE=/var/run/juggernaut.pid' определен. Это существует? --- НЕТ

  3. В «стартовой» части запускается «chown juggernaut: juggernaut». Существует ли пользователь juggernaut и является ли он членом группы juggernaut? -- ДА/ДА

      cat /etc/group
          redis:x:1002:
          juggernaut:x:113:
    
      groups juggernaut
          juggernaut : juggernaut
    

ИЗМЕНИТЬ

     fizzy@li136-198:~$ sudo ls -l /usr/bin/juggernaut 
              ls: cannot access /usr/bin/juggernaut: No such file or directory
     fizzy@li136-198:~$ sudo ls -l /usr/local/bin/juggernaut 
            lrwxrwxrwx 1 root root 40 Sep 20 02:48 /usr/local/bin/juggernaut -> ../lib/node_modules/juggernaut/server.js

я пытался изменить

        DAEMON=/usr/bin/juggernaut

to

        DAEMON=/usr/local/bin/juggernaut

после этого я попытался перезапустить джаггернаут, используя

         sudo /etc/init.d/juggernaut start

Сервер запущен, но не как фоновый процесс/служба.

ИЗМЕНИТЬ

Запуск скрипта в режиме отладки, т.е. изменение строки shebang вверху для добавления -x, например

    #! /bin/bash -x

Вот результат: -

   + PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
   + DAEMON=/usr/bin/juggernaut
   + NAME=Juggernaut2
   + DESC=Juggernaut2
   + PIDFILE=/var/run/juggernaut.pid
   + test -x /usr/bin/juggernaut
   + exit 0

ИЗМЕНИТЬ

Изменение пути моего джаггернаута, поскольку кажется, что мой джаггернаут установлен где-то еще. Теперь вот вывод

    fizzy@li136-198:~$ sudo /etc/init.d/juggernaut start
    + PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    + DAEMON=/usr/local/bin/juggernaut
    + NAME=Juggernaut2
    + DESC=Juggernaut2
    + PIDFILE=/var/run/juggernaut.pid
    + test -x /usr/local/bin/juggernaut
    + set -e
    + case "$1" in
    + echo -n 'Starting Juggernaut2: '
    Starting Juggernaut2: + touch /var/run/juggernaut.pid
    + chown juggernaut:juggernaut /var/run/juggernaut.pid
    + start-stop-daemon --start --quiet --umask 007 --pidfile /var/run/juggernaut.pid --chuid juggernaut:juggernaut --exec /usr/local/bin/juggernaut
    20 Sep 06:41:16 - Your node instance does not have root privileges. This means that the flash XML policy file will be served inline instead of on port 843. This will slow down initial connections slightly.
    20 Sep 06:41:16 - socket.io ready - accepting connections

    node.js:134
            throw e; // process.nextTick error, or 'error' event on first tick
            ^
    Error: EADDRINUSE, Address already in use
        at Server._doListen (net.js:1106:5)
        at net.js:1077:14
        at Object.lookup (dns.js:153:45)
        at Server.listen (net.js:1071:20)
        at Object.listen (/usr/local/lib/node_modules/juggernaut/lib/juggernaut/server.js:51:21)
        at Object.listen (/usr/local/lib/node_modules/juggernaut/lib/juggernaut/index.js:9:10)
        at Object.<anonymous> (/usr/local/lib/node_modules/juggernaut/server.js:21:12)
        at Module._compile (module.js:402:26)
        at Object..js (module.js:408:10)
        at Module.load (module.js:334:31)
    + echo failed
    failed
    + exit 0

person Mohit Jain    schedule 15.09.2011    source источник
comment
Вы должны запустить службу. Джаггернаут не запущен, вы видите только команду «grep» в своем поиске. Добавлю к моему ответу.   -  person Daan    schedule 19.09.2011


Ответы (2)


Вероятно, вы захотите запустить Juggernaut и Redis как сервисный/фоновый процесс. Запуск его как службы дает возможность перенаправлять журналы в файл, который затем можно регулярно проверять.

Чтобы создать службу, которая автоматически запускается во время загрузки, вам нужно сделать разные вещи в зависимости от используемой ОС:

Убедитесь, что вы запускаете службы после их создания, добавляя службу на уровень запуска по умолчанию (будет запускаться автоматически во время загрузки) или запускайте их вручную.

Добавление службы на уровень запуска по умолчанию (Linux) также является частью обоих руководств по Linux выше:

sudo update-rc.d -f juggernaut defaults
sudo update-rc.d -f redis-server defaults

После добавления службы на уровень запуска по умолчанию вам все равно нужно запустить службу вручную (Linux):

sudo /etc/init.d/juggernaut start
sudo /etc/init.d/redis-server start
person Daan    schedule 15.09.2011
comment
@Даан .. Это о Джаггернауте, а о Редисе? - person Mohit Jain; 16.09.2011
comment
Я добавил пример Ubuntu Redis. Идея одинакова для обоих сервисов. - person Daan; 16.09.2011
comment
@daan .. Я следовал обоим руководствам. Проверьте скриншот, добавленный мной. Не удалось получить доступ к application.js для сервера juggernaut. - person Mohit Jain; 18.09.2011
comment
Вы проверяли журналы в /var/log? Возможно, завалялся какой-то устаревший файл pid, или порт используется, или проблема с правами доступа. - person Daan; 19.09.2011
comment
Я не вижу никакого журнала для juggernaut. Есть один для Redis, но ничего для juggernaut. Проверьте мое редактирование в вопросе .. - person Mohit Jain; 19.09.2011
comment
Вы сделали скрипт /etc/init.d/juggernaut исполняемым? Попробуйте запустить без параметров. В скрипте Juggernaut определен файл PID 'PIDFILE=/var/run/juggernaut.pid'. Это существует? В «стартовой» части запускается «chown juggernaut: juggernaut». Существует ли пользователь juggernaut и является ли он членом группы juggernaut? - person Daan; 19.09.2011
comment
Проверьте мою часть редактирования сейчас. Есть ответы на вопросы ДА/Нет/ДА/ДА - person Mohit Jain; 19.09.2011
comment
Итак, PID-файл не создается. Можете ли вы попробовать выполнить каждую команду в сценарии запуска Juggernaut вручную? Просто отлаживайте, чтобы увидеть, где что-то пойдет не так, запускайте его шаг за шагом. Вы получаете какие-либо ошибки? - person Daan; 19.09.2011
comment
давайте продолжим это обсуждение в чате - person Mohit Jain; 20.09.2011
comment
Я не могу понять, в чем проблема. пока я просто запускаю его на экране. Спасибо за вашу помощь. Выделение награды вам. :) - person Mohit Jain; 21.09.2011
comment
screen или tmux — это один из вариантов, но тогда вы должны запустить службу самостоятельно, потому что она не запустится при перезагрузке. - person JohnMerlino; 18.03.2014

Я столкнулся с той же проблемой (используя Ubuntu 12.04 LTS). Использование upstart помогло мне.

Создайте файл juggernaut.conf, содержащий:

start on filesystem and started networking
stop on shutdown

script
    # We found $HOME is needed. Without it, we ran into problems
    export HOME="/root"

    exec /usr/local/bin/juggernaut 2>&1 >> /var/log/juggernaut.log
end script

Сохраните этот файл в /etc/init/ (не init.d) и сделайте его исполняемым (chmod +x). На этом все, Juggernaut запускается как демон, если сервер запустился.

Примечание: рядом с juggernaut.log самого juggernaut есть juggernaut.log, расположенный в /var/log/upstart/, где пишется информация о попытках выскочки запустить juggernaut.

Я более или менее скопировал приведенный выше скрипт из этот блог . Однако показанный там сценарий начинался с:

 start on startup

Это не сработало для меня, потому что файловая система не была смонтирована должным образом при запуске, поэтому нет возможности создать juggernaut.log (ошибка файловой системы только для чтения). Авторы этот пост на serverfault для решения этой проблемы.

person Jos    schedule 31.12.2012