Далее, давайте посмотрим, сможет ли навсегда достичь цели.
1. Навсегда введение
Forever - это простой императивный демон Nodejs, который может запускаться, остановить и перезагружать приложения. Forever полностью основан на операциях командной строки. В рамках процесса навсегда создается детский процесс узла, и детский процесс узла контролируется через монитор. Как только файл обновляется или процесс будет пройден, навсегда будет автоматически перезапустить сервер узлов, чтобы убедиться, что приложение работает нормально.
2. Навсегда установка
Глобальная установка навсегда
Кода -копия выглядит следующим образом:
~ D:/workspace/javascript> npm install -g навсегда
D:/toolkit/nodejs/forever -> d:/toolkit/nodejs/node_modules/forever/bin/forever
D:/toolkit/nodejs/foreverd -> d:/toolkit/nodejs/node_modules/forever/bin/foreverd
Проверьте Forever Help
Кода -копия выглядит следующим образом:
~ D:/Workspace/JavaScript> Forever -h
Помощь: Использование: навсегда [действие] [Параметры] Скрипт [Script-Options]
помощь:
Помощь: отслеживает сценарий, указанный в текущем процессе или как демон
помощь:
Помощь: действия:
Помощь: Скрипт «СТАДАТЬ СТАРЬ» как демон
Помощь: остановите сценарий Демона
Помощь: остановите все сценарии навсегда бегать навсегда
Помощь: перезапустить сценарий демон.
Помощь: перезагрузить перезагрузку всех сценариев навсегда запуска
Помощь: Список списков все запуска сценарии навсегда
Справка: конфигурация перечисляет все навсегда конфигурацию пользователя
Справка: установить <ключ> <all> Устанавливает указанный конфигуратор навсегда <ключ>
Справка: Очистить <ключ> очищает указанный конфигуратор навсегда <ключ>
Справка: журналы перечисляют файлы журнала для всех процессов навсегда
Справка: журналы <скрипт | Индекс> Хвосты журналы для <сценария | index>
Справка: столбцы Добавить <COL> добавляет указанный столбец к выводу в `forever List`
Справка: столбцы RM <COL> удалили указанный столбец из вывода в `forever List`
Справка: Столбцы установили <Cols> Установить все столбцы для вывода в `forever list`
Помощь: Cleanlogs [осторожно] удаляет все исторические файлы журналов навсегда навсегда
помощь:
помощь: варианты:
Помощь: -m Макс. только запустите указанный сценарий Max Times
Справка: -l Logfile Logs The Forever Output to Logfile
Помощь: -o Outfile logs stdout от сценария детей до Outfile
Справка: -e errfile журнала STDERR от STDERR от STDERR TO ERRFILE
Помощь: -p Базовый путь для всех вечно связанных файлов (файлы PID и т. Д.)
Справка: -c Команда команды для выполнения (по умолчанию узел)
Помощь: -a, -Append Append Logs
Помощь: -f, -fifo потоки
Помощь: -n, -численное количество линий журнала для печати
Помощь: -ПИД -файл PID
Помощь: -Обийдируйте исходный каталог, для которого сценарий относится к
Помощь: -Минимальное время безотказной работы (миллисы), чтобы сценарий не считался «вращением»
Помощь: -Спинсы время, чтобы подождать (миллисы) между запусками вращающегося сценария.
Помощь:-Colors-Нет цвета отключить вывод раскраски
помощь:-псевдоним-нет цвета
Помощь: -d, -Debug Force Forever для регистрации отладки вывода
Помощь: -v, --вербозги включает в себя многословные сообщения от Forever
Помощь: -s, -silent запустить сценарий ребенка сценарием stdout и stderr
Помощь: -W, -наблюдать за изменениями файлов
Помощь:-Справочник на верхнем уровне, чтобы посмотреть
Справка: -Ведь на игнорирование шаблона при включении часов (разрешено несколько вариантов)
Помощь: -H, - - - -ты смотришь на это
помощь:
Помощь: [длительный процесс]
Справка: процесс Forever продолжит запускать сообщения об выводе журналов в консоли.
Помощь: Ex. навсегда -o out.log -e err.log my -script.js
помощь:
Помощь: [Демон]
помощь: процесс навсегда будет работать как демон, который запустит целевой процесс.
Помощь: в фоновом режиме. Это чрезвычайно полезно для сценариев удаленного запуска Simple Node.js
Помощь: без использования NOHUP. Рекомендуется начать с -o -l, & -e.
Помощь: Ex. Forever Start -l forever.log -o out.log -e err.log my -daemon.js
Помощь: навсегда остановите мой daemon.js
помощь:
Мы видим, что навсегда поддерживает множество элементов команд и конфигурации, которые должны быть инструментом управления командной строкой.
3. Китайское объяснение командной строки Forever
Субкомманды Действия:
Кода -копия выглядит следующим образом:
Начать: запустите процесс Daemon
Остановите: остановите демон
STOPALL: Остановите все навсегда процессы
Перезагрузите: перезапустите демон
перезагрузить: перезапустите все процессы для
Список: список отображает процесс Forever
Конфигурация: Перечислите все элементы конфигурации пользователя
Установить <ключ> <Val>: установить элементы конфигурации пользователя
Очистить <ключ>: очистить элементы конфигурации пользователя
Журналы: списки журналов для всех навсегда процессов
журналы <скрипт | Индекс>: Показать последний журнал
Столбцы добавить <col>: индивидуальные метрики в список навсегда
столбцы RM <COL>: удалить метрику списка Forever
Столбцы SET <Cols>: установить все метрики на Forever List
Cleanlogs: удалить все журналы истории навсегда
Параметры параметра конфигурации:
Кода -копия выглядит следующим образом:
-m Макс: количество раз, когда указанный сценарий запускается
-l logfile: выходной журнал
-О Outfile: информация о консоли вывода в Outfile
-e errfile: ошибка выходной консоли в errfile
-p Путь: корневой каталог
-c Команда: выполнить команду, по умолчанию узел узел
-a, добавление: журналы слияния
-f, FIFO: вывод потокового журнала
-n, номер: количество линий печати журнала
PIDFILE: PID -файл
Источника: каталог исходного кода
MINUPTIME: минимальное время обновления SPINN (MS)
Спинсы: интервал между двумя спинами
Цвета: консольная вывода раскраска
Plain: no-colors Alias, вывод консоли бесцветный
-Д, отладка: режим отладки
-v, vorbose: print detailsed
-s, Silent: не печатайте журналы и сообщения об ошибках
-W, СМОТРЕТЬ: Мониторинг изменения файла
WatchDirectory: контролируйте верхний каталог
WatchIgnore: игнорируйте мониторинг с помощью сопоставления рисунков
-Х, справка: информация о справке командной строки
4. Forever Server Management
Создайте веб -проект (Express3+EJS) и используйте навсегда для управления сервером.
Установите Express3
Кода -копия выглядит следующим образом:
~ D:/workspace/javascript> express -e nodejs -forever
~ D:/workspace/javascript> cd nodejs-forever && npm install
Начните приложение через вечно
Кода -копия выглядит следующим образом:
~ D:/workspace/javascript/nodejs-forever> Forever Start app.js
ПРЕДУПРЕЖДЕНИЕ: -Минипированное время не установлено. Дефолт на: 1000 мс
ПРЕДУПРЕЖДЕНИЕ: -Спинпит не установлен. Ваш сценарий выйдет, если он не останется не менее 1000 мс.
Информация: навсегда обработка файла: app.js
Откройте браузер: http: // localhost: 3000, вы можете увидеть веб -интерфейс
Проверьте статус навсегда под победой
Кода -копия выглядит следующим образом:
~ D:/Workspace/javascript/nodejs-forever> Forever List
Информация: нет навсегда процессов работы
~ D:/workspace/javascript/nodejs-forever> Forever Stop App.js
Ошибка: навсегда не может найти процесс с индексом: app.js
Мы обнаружили, что программа Forever работает неправильно! ! Программа явно находится в своем состоянии, но ее нельзя увидеть через список. Затем переключитесь на Linux Ubuntu и продолжайте тестирование.
5. Forever управляет серверами в Ubuntu
Системная среда Linux
Linux: Ubuntu 12.04.2 64bit Server
Узел: v0.11.2
NPM: 1.2.21
Проект инициализации: команда установки не объясняется
Кода -копия выглядит следующим образом:
~ CD/HOME/CONAN/NODEJS
~ Express -e nodejs -forever
~ cd nodejs-forever && npm install
~ sudo npm установить навсегда -g
Начни навсегда
Скопируйте код следующим образом: ~ Forever Start App.js
ПРЕДУПРЕЖДЕНИЕ: -Минипированное время не установлено. Дефолт на: 1000 мс
ПРЕДУПРЕЖДЕНИЕ: -Спинпит не установлен. Ваш сценарий выйдет, если он не останется не менее 1000 мс.
Информация: навсегда обработка файла: app.js
Проверьте состояние сервера узлов
Скопируйте код следующим образом: ~ Forever List
Информация: навсегда процессы работы
Данные: командный скрипт UID Forever Pid
Данные: [0] l2ty/usr/local/bin/node app.js 18276 18279 /home/conan/.forever/l2ty.log 0: 0: 0: 37.792
# Системный процесс
~ ps -Aux | Греп -узл
ПРЕДУПРЕЖДЕНИЕ: Плохой синтаксис PS, может быть, поддельный '-'? См. Http://procps.sf.net/faq.html
Конан 18296 0,5 1,1 597696 23776? SSL 15:48 0:00/usr/local/bin/node/usr/local/lib/node_modules/forever/bin/monitor app.js
Конан 18299 0,4 0,8 630340 18392? Sl 15:48 0:00/usr/local/bin/node /home/conan/nodejs/nodejs-forever/app.js
# Портовое занятие
~ netstat -nltp | grep node
TCP 0 0 0.0.0.0:3000 0.0.0.0:* Слушайте 18299/Узел
Остановите сервер
Скопируйте код следующим образом: ~ Forever Stop App.js
Информация: навсегда остановлен процесс:
Данные: командный скрипт UID Forever Pid
[0] l2ty/usr/local/bin/node app.js 18276 18279 /home/conan/.forever/l2ty.log 0: 0: 0: 45.621
Мы видим, что это нормально в среде Linux Ubuntu.
6. Моделируйте время простоя сервера
Два тестовых решения:
1. Используйте команды Linux, чтобы напрямую убить процесс узла
2. В приложении моделируйте выход исключения
1). Используйте команды Linux, чтобы напрямую убить процесс узла
Кода -копия выглядит следующим образом:
# Проверьте процесс узла, PID = 18299
~ ps -Aux | Греп -узл
Конан 18296 0,0 1,1 597696 23776? SSL 15:48 0:00/usr/local/bin/node/usr/local/lib/node_modules/forever/bin/monitor app.js
Конан 18299 0,0 0,8 630340 18392? Sl 15:48 0:00/usr/local/bin/node /home/conan/nodejs/nodejs-forever/app.js
Conan 18315 0,0 0,0 13584 956 баллов/5 r+ 15:52 0:00 grep -color = автоматический узел
# Убить пид = 19299
~ Убить -9 18299
# Посмотрите на процесс узла снова, узел автоматически перезагрузит, новый PID = 18324
~ ps -Aux | Греп -узл
Конан 18296 0,0 1,1 597696 23916? SSL 15:48 0:00/usr/local/bin/node/usr/local/lib/node_modules/forever/bin/monitor app.js
Конан 18316 2,6 0,8 630340 18412? Sl 15:52 0:00/usr/local/bin/node /home/conan/nodejs/nodejs-forever/app.js
Conan 18324 0,0 0,0 13584 956 баллов/5 r+ 15:52 0:00 grep -color = автоматический узел
Мы видим, что убийство процесса узла навсегда поможет нам перезагрузить узел.
Убить навсегда монитор
Кода -копия выглядит следующим образом:
~ Убить -9 18296
~ ps -Aux | Греп -узл
Конан 18316 0,0 0,9 630340 18644? Sl 15:52 0:00/usr/local/bin/node /home/conan/nodejs/nodejs-forever/app.js
Конан 18333 0,0 0,0 13584 952 баллов/5 с+ 15:57 0:00 Греп -Color = Автоматический узел
# Снова убейте процесс узела
~ Убить -9 18316
~ ps -Aux | Греп -узл
Конан 18336 0,0 0,0 13584 956 баллов/5 с+ 15:58 0:00 Греп -Color = Автоматический узел
Мы пытались убить монитор Forever. Программа монитора не перезапускалась автоматически. После убийства процесса узела узел не будет перезагружаться автоматически.
2). В приложении моделируйте выход исключения
Изменить файл: app.js
Кода -копия выглядит следующим образом:
~ vi app.js
// ..
http.createserver (app) .listen (app.get ('port'), function () {
console.log (новая дата ());
console.log ('Express Server Suild on Port' + app.get ('port'));
});
settimeout (function () {
console.log (новая дата ());
Выбросить новую ошибку («Приложение - это ошибка от внутренней!»);
}, 10*1000);
Начните с команды узла
Скопируйте код следующим образом: ~ node app.js
Чт 26 сентября 2013 г. 16:08:44 GMT+0800 (CST)
Экспресс -сервер прослушивание на порту 3000
Чт 26 сентября 2013 г. 16:08:54 GMT+0800 (CST)
/HOME/Conan/nodejs/nodejs-forever/app.js:41
Выбросить новую ошибку («Приложение - это ошибка от внутренней!»);
^
Ошибка: приложение - это ошибка от внутренней!
at null._ontimeout (/home/conan/nodejs/nodejs-forever/app.js:41:9)
на timer.listontimeout [как uttimeout] (Timers.js: 110: 15)
Через 10 секунд процесс узла висит из -за внутренней ошибки.
Начните с команды Forever
Кода -копия выглядит следующим образом:
~ Mkdir журналы
~ chmod 777 -r журналы
~ навсегда -p. -l ./logs/access.log -e ./logs/error.log Start app.js
# Проверьте журнал ошибок
~ Cat Logs/Access.Log LS
Чт 26 сентября 2013 г. 16:15:02 GMT+0800 (CST)
Экспресс -сервер прослушивание на порту 3000
Чт 26 сентября 2013 г. 16:15:12 GMT+0800 (CST)
/HOME/Conan/nodejs/nodejs-forever/app.js:41
Выбросить новую ошибку («Приложение - это ошибка от внутренней!»);
^
Ошибка: приложение - это ошибка от внутренней!
at null._ontimeout (/home/conan/nodejs/nodejs-forever/app.js:41:9)
на timer.listontimeout [как uttimeout] (Timers.js: 110: 15)
Ошибка: навсегда обнаруженный скрипт, выходящий с кодом: 8
Ошибка: навсегда перезагружать скрипт в течение 1 раз
Чт 26 сентября 2013 г. 16:15:13 GMT+0800 (CST)
Экспресс -сервер прослушивание на порту 3000
Чт 26 сентября 2013 г. 16:15:23 GMT+0800 (CST)
/HOME/Conan/nodejs/nodejs-forever/app.js:41
Выбросить новую ошибку («Приложение - это ошибка от внутренней!»);
^
Ошибка: приложение - это ошибка от внутренней!
at null._ontimeout (/home/conan/nodejs/nodejs-forever/app.js:41:9)
на timer.listontimeout [как uttimeout] (Timers.js: 110: 15)
Ошибка: навсегда обнаруженный скрипт, выходящий с кодом: 8
Ошибка: навсегда перезагружать скрипт в течение 2 раз
Чт 26 сентября 2013 г. 16:15:23 GMT+0800 (CST)
Экспресс -сервер прослушивание на порту 3000
Чт 26 сентября 2013 г. 16:15:33 GMT+0800 (CST)
/HOME/Conan/nodejs/nodejs-forever/app.js:41
Выбросить новую ошибку («Приложение - это ошибка от внутренней!»);
^
Ошибка: приложение - это ошибка от внутренней!
at null._ontimeout (/home/conan/nodejs/nodejs-forever/app.js:41:9)
на timer.listontimeout [как uttimeout] (Timers.js: 110: 15)
Ошибка: навсегда обнаруженный скрипт, выходящий с кодом: 8
Ошибка: навсегда перезагружать скрипт в течение 3 раз
Чт 26 сентября 2013 г. 16:15:33 GMT+0800 (CST)
Экспресс -сервер прослушивание на порту 3000
Чт 26 сентября 2013 г. 16:15:43 GMT+0800 (CST)
/HOME/Conan/nodejs/nodejs-forever/app.js:41
Выбросить новую ошибку («Приложение - это ошибка от внутренней!»);
^
Ошибка: приложение - это ошибка от внутренней!
at null._ontimeout (/home/conan/nodejs/nodejs-forever/app.js:41:9)
на timer.listontimeout [как uttimeout] (Timers.js: 110: 15)
Ошибка: навсегда обнаруженный скрипт, выходящий с кодом: 8
Ошибка: навсегда перезагружать скрипт в течение 4 раз
Мы обнаружили, что каждые 10 секунд узел вешает трубку, а затем перезапускается вечно! !
Через список мы также можем видеть, что PID менялся несколько раз.
Кода -копия выглядит следующим образом:
~ Forever List
Информация: навсегда процессы работы
Данные: командный скрипт UID Forever Pid
Данные: [0] smtt/usr/local/bin/node app.js 18444 18579 logs/access.log 0: 0: 0: 7.211
~ Forever List
Информация: навсегда процессы работы
Данные: командный скрипт UID Forever Pid
Данные: [0] smtt/usr/local/bin/node app.js 18444 18579 logs/access.log 0: 0: 0: 8.921
~ Forever List
Информация: навсегда процессы работы
Данные: командный скрипт UID Forever Pid
Данные: [0] smtt/usr/local/bin/node app.js 18444 18604 logs/access.log 0: 0: 0: 0.177
~ Forever List
Информация: навсегда процессы работы
Данные: командный скрипт UID Forever Pid
Данные: [0] smtt/usr/local/bin/node app.js 18444 18604 logs/access.log 0: 0: 0: 2.206
Таким образом, навсегда помогает нам выполнить несколько важных функций управления сервером: «Простая команда запуска/остановки», «Поддержка горячего развертывания», «Загрузить перезапуск» и «Интерфейс мониторинга и журналы».
По сравнению с управлением Upstart, шаги по настройке сценариев (/etc/init/nodejs-xx.conf) опущены. Другие функции должны использоваться на шаг ближе, чтобы знать.
7. Конфигурация стартапа среды разработки и производственной среды
Среда развития
Кода -копия выглядит следующим образом:
~ cd/home/conan/nodejs/nodejs-forever/
~ навсегда -p. -l ./logs/access.log -e ./logs/error.log -a -w start app.js
Производственная среда
Скопируйте код следующим образом: ~ export log =/var/log/nodejs/project
~ Экспорт pid =/var/log/nodejs/project/forever.pid
~ Экспорт app_path =/home/conan/nodejs/nodejs-forever
~ export app = $ app_path/app.js
~ forever -p $ app_path -l $ log/access.log -e $ log/error.log -o $ log/out.log -a -pidfile $ pid start $