Настройка Node.js для простого развертывания и обновления.

В настоящее время мы разрабатываем веб-сайт (TYPO3 под Apache) для клиента, который поддерживается приложением node.js/socket.io, которое предоставляет обновления в реальном времени для контента, обслуживаемого CMS.

Поскольку это наш первый проект на node.js, у меня нет передового опыта, когда дело доходит до «идеальной настройки», поэтому я потратил некоторое время на изучение методов развертывания.

У меня осталось несколько вопросов, чтобы добиться хорошей установки, которая:

  1. Легко развертывается заказчиком. Это очень важно, потому что наш веб-сайт будет интегрирован в их «живую» установку TYPO3, которая обслуживает множество веб-сайтов и работает на серверах, которыми управляет не клиент, а другая (централизованная) организация, которая делает звонки в службу поддержки и вносит изменения в сервер. медленный процесс.

  2. Должно быть легко обновляться. Как уже упоминалось, запрос перезапуска и внесение изменений на сервер — медленный процесс, поэтому в идеале установка узла должна перезапускаться/обновляться, когда она получает изменения, которые передаются в динамическую установку с помощью git.

Развертывание

Общее мнение, по-видимому, заключается в том, чтобы использовать навсегда, когда дело доходит до развертывания узловых приложений для поддержания их работы. Я протестировал forever, и, похоже, он отлично работает при установке с помощью npm install forever -g(глобальный).Это потребует внешней помощи для глобальной установки в живой среде, поэтому я бы предпочел, чтобы он работал из каталога приложения node_modules, но я не смог создать надежную оболочку для этого. .

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

  • Простой скрипт init.d?
  • Пишете оболочку сторожевого таймера?
  • Задача планировщика TYPO3, которая проверяет статус навсегда?

Быстрая разработка / Перезапуск при обновлении

В настоящее время мы все еще находимся на стадии разработки проекта, и каждый раз, когда я вношу изменения в приложение node.js, я вручную перезапускаю узелили навсегда. Это работает, но далеко от идеала. Существует несколько небольших npmмодулей, которые проверяют наличие модификаций файлов и перезапускают узелпри обнаружении изменений, например:

Есть ли у кого-нибудь опыт работы с любым из них?

Обновление: почему бы вам просто не использовать кластер?

Модуль кластера обеспечивает аналогичную функциональность с помощью механизма перезагрузки, но не работает с Node 0.5+. Основной модуль кластера (Node 0.6+), который заменил его, не имеет всех этих функций, а только обеспечивает кластеризацию.Что, в свою очередь, плохо сочетается с socket.io. По крайней мере, не без использования Redis(что является проблемой для нас, потому что мы не можем навязать заказчику еще один обязательный сервис).

--

Очевидно, я пытаюсь найти наиболее стабильное решение, которое сочетает в себе обновление-рестартер с навсегдаперед передачей проекта заказчику, и я очень надеюсь, что кто-нибудь уже подготовил проверенное сочетание методов.

56
задан Community 23 May 2017 в 12:02
поделиться