Я использую приложение ruby on rails для реализации чата. Я не могу настроить сервер juggernaut в производственном режиме.
Я следовал этому руководству для настройки redis. и он работает отлично.
Затем я последовал , чтобы настроить Джаггернаута . Но когда я пытаюсь начать, Джаггернаут не работает.
Вот команды grep, которые проверяют, что redis работает, а juggernaut нет.
Когда я пытаюсь остановить / запустить сервер Redis, он выдает мне вывод:
Starting/Stopping redis-server: redis-server.
Но ничего, когда я делаю то же самое для Джаггернаута. Проверьте скриншот.
Некоторые другие вещи, чтобы проверить, что на самом деле происходит:
Разрешения для исполняемого файла на файл /etc/init.d/juggernaut - ДА
-rwxr-xr-x 1 fizzy fizzy 1310 Sep 19 11:06 juggernaut
PIDFILE = / var / run / juggernaut.pid 'определено. Это существует? --- НЕТ
В части «начало» запускается «chown juggernaut: juggernaut». Существует ли пользователь juggernaut и является ли он членом группы juggernaut? - ДА / ДА
cat /etc/group
redis:x:1002:
juggernaut:x:113:
groups juggernaut
juggernaut : juggernaut
Запуск sudo 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
на
DAEMON=/usr/local/bin/juggernaut
, после чего я попытался перезапустить Джаггернаут, используя [ 1138]
sudo /etc/init.d/juggernaut start
Сервер запущен, но не как фоновый процесс / служба.
РЕДАКТИРОВАТЬ
Запуск сценария в режиме отладки:
+ 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
Вот на все используемые порты
tcp 0 0 localhost.localdom:9312 *:* LISTEN
tcp 0 0 localhost.localdo:mysql *:* LISTEN
tcp 0 0 *:6379 *:* LISTEN
tcp 0 0 *:http-alt *:* LISTEN
tcp 0 0 *:www *:* LISTEN
tcp 0 0 localhost.localdo:52433 *:* LISTEN
tcp 0 0 *:ssh *:* LISTEN
tcp 0 0 localhost.localdo:53784 *:* LISTEN
tcp 0 0 *:smtp *:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
Что бы я сделал для отладки такого рода проблемы выскочки: отредактируйте /etc/init.d/juggernaut
и измените строку Шебанга вверху, чтобы добавить -x
, например
#! /bin/bash -x
, затем попытайтесь запустить сервис, и вы должны увидеть, как он выводит отладочную информацию, которая, как мы надеемся, прояснит, в чем дело.
обновление: вторая последняя строка
+ test -x /usr/bin/juggernaut
проясняет (для меня :-) сценарий инициализации прерывается, потому что считает, что juggernaut не установлен. Вам нужно обновить эту строку, чтобы она указала на /usr/local/bin/juggernaut
.
обновление: «используемый адрес» означает, что другой процесс прослушивает этот сокет, возможно, еще одну копию Джаггернаута. netstat -tpl
скажет вам.