Развертывание производственного сервера Node.js [закрыто]

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

Приложение простое (<100 LOC), но должно быть очень эффективным, надежным и могло работать непрерывно в течение многих лет без перезапуска. Он будет запущен на большом сайте с десятками подключений в секунду. (приложение не используется в качестве веб-сервера, оно имеет только JSON API)

Вот подходы, которые я рассмотрел, но я все еще не уверен в следующем:

Использование фреймворка (например, Express)

Поскольку приложение должно быть высокопроизводительным и настолько простым, я бы хотел избежать добавления раздутия в виде фреймворка.

Запуск сервера с помощью nohup

Основная проблема здесь связана с обработкой исключений, мы (очевидно) не хотим, чтобы весь сервер падал из-за исключения. Насколько я понимаю, упаковка всего приложения в цикл try {} catch {} не поможет, потому что интерпретатор Javascript остается в непредсказуемом состоянии после исключения. Это правильно?

Используя что-то вроде Forever

, я установил Forever на нашу машину FreeBSD, и в ней было много ошибок. Это привело к появлению бесконечных процессов, которые нельзя было убить с помощью Forever.Мне пришлось запустить kill -9 , чтобы вернуть мою машину, и я не очень уверен в запуске производственного приложения на Forever. Также кажется, что Upstart (аналогичный инструмент, но более общий) не будет работать во FreeBSD.

Хостинговые решения (например, Heroku, Rackspace, Amazon EC2 и т. Д.)

Это, вероятно, самое простое решение, но у нас уже есть серьезное оборудование для остальных наших веб-серверов. По финансовым соображениям в этом нет смысла.

Разве у этого должно быть какое-то установленное решение? Я что-то упустил?

75
задан David Chouinard 5 December 2011 в 16:54
поделиться