В настоящее время мы разрабатываем веб-сайт (TYPO3 под Apache) для клиента, который поддерживается приложением node.js/socket.io, которое предоставляет обновления в реальном времени для контента, обслуживаемого CMS.
Поскольку это наш первый проект на node.js, у меня нет передового опыта, когда дело доходит до «идеальной настройки», поэтому я потратил некоторое время на изучение методов развертывания.
У меня осталось несколько вопросов, чтобы добиться хорошей установки, которая:
Легко развертывается заказчиком. Это очень важно, потому что наш веб-сайт будет интегрирован в их «живую» установку TYPO3, которая обслуживает множество веб-сайтов и работает на серверах, которыми управляет не клиент, а другая (централизованная) организация, которая делает звонки в службу поддержки и вносит изменения в сервер. медленный процесс.
Должно быть легко обновляться. Как уже упоминалось, запрос перезапуска и внесение изменений на сервер — медленный процесс, поэтому в идеале установка узла должна перезапускаться/обновляться, когда она получает изменения, которые передаются в динамическую установку с помощью git
.
Развертывание
Общее мнение, по-видимому, заключается в том, чтобы использовать навсегда
, когда дело доходит до развертывания узловых приложений для поддержания их работы. Я протестировал forever
, и, похоже, он отлично работает при установке с помощью npm install forever -g
(глобальный).Это потребует внешней помощи для глобальной установки в живой среде, поэтому я бы предпочел, чтобы он работал из каталога приложения node_modules
, но я не смог создать надежную оболочку для этого. .
Кроме того, навсегда
работает нормально, но его нужно запускать вручную. Каков наилучший подход для обеспечения того, чтобы он запускался при загрузке сервера и продолжал работать?
init.d
?статус навсегда
?Быстрая разработка / Перезапуск при обновлении
В настоящее время мы все еще находимся на стадии разработки проекта, и каждый раз, когда я вношу изменения в приложение node.js, я вручную перезапускаю узел
или навсегда
. Это работает, но далеко от идеала.
Существует несколько небольших npm
модулей, которые проверяют наличие модификаций файлов и перезапускают узел
при обнаружении изменений, например:
навсегда
)Есть ли у кого-нибудь опыт работы с любым из них?
Обновление: почему бы вам просто не использовать кластер?
Модуль кластера обеспечивает аналогичную функциональность с помощью механизма перезагрузки, но не работает с Node 0.5+. Основной модуль кластера (Node 0.6+), который заменил его, не имеет всех этих функций, а только обеспечивает кластеризацию.Что, в свою очередь, плохо сочетается с socket.io. По крайней мере, не без использования Redis(что является проблемой для нас, потому что мы не можем навязать заказчику еще один обязательный сервис).
--
Очевидно, я пытаюсь найти наиболее стабильное решение, которое сочетает в себе обновление-рестартер с навсегда
перед передачей проекта заказчику, и я очень надеюсь, что кто-нибудь уже подготовил проверенное сочетание методов.