Запуск сервера NodeJS в производстве - PullRequest
1 голос
/ 28 июня 2019

У меня есть приложение реагировать + узел, которое мне нужно развернуть.Я использую nginx для обслуживания своего интерфейса, но я не уверен, что использовать, чтобы мой сервер nodejs работал в работе.

Проект размещен на виртуальной машине Windows.Я не могу использовать pm2 из-за проблем с лицензией.Я понятия не имею, хорошо ли работает сервер с помощью nodemon в рабочей среде.Я никогда не развертывал приложение в рабочей среде, поэтому понятия не имею о соответствующих методах.

Ответы [ 3 ]

2 голосов
/ 28 июня 2019

Вы также можете использовать докер. Вы можете создать несколько док-контейнеров, которые будут запускать ваш сервер узла. Теперь на уровне nginx на вашем хост-компьютере вы можете выполнить конфигурацию балансировки нагрузки, которая будет направлять трафик в равной степени к различным контейнерам док-узлов, это повысит вашу доступность и масштабируемость. В случае интенсивного трафика вам просто нужно увеличить количество контейнеров док-узлов по мере и когда требуется. Я предполагаю, что первоначально 2 контейнера будет достаточно для обработки трафика (хотя зависит от вашего варианта использования).

Примечание: - Вы также можете использовать forever или supervisor в соответствии с предложением @Rajesh Gupta внутри ваших док-контейнеров для запуска сервера узлов. Мы используем PM2 для этого.

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

О докере можно узнать из здесь .

Также вы можете прочитать о балансировке нагрузки в nginx из здесь .

Более того, для повышения доступности вы можете добавить слой кэширования между контейнерами nginx и docker. Varnish - лучший сервис кеширования, которым я пользовался до настоящего времени.

PS: - Мы используем аналогичную, но более продвинутую архитектуру для запуска нашего приложения электронной коммерции, которое ежедневно генерирует 5-10 тыс. Заказов. Так что это проверенный подход с нулевым временем простоя.

1 голос
/ 28 июня 2019

Попробуй докеризировать все приложение, включая базу данных, сервер кэширования (если есть) и т. Д. Вот несколько примеров, почему:

  • Вы можете запустить полностью работоспособную среду разработки на любом компьютер с поддержкой Docker; вам не нужно устанавливать библиотеки, зависимости, скачать пакеты, связываться с файлами конфигурации и т. д.

  • Рабочая среда приложения остается согласованной во всех весь рабочий процесс. Это означает, что приложение работает точно так же для
    разработчик, тестировщик и клиент, будь то разработка, подготовка или
    производственный сервер. Короче говоря, Докер является контрмерой для
    вековой ответ в разработке программного обеспечения: «Странно, это работает для мне! "

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

1 голос
/ 28 июня 2019

Вы можете рассмотреть forever или supervisor.

Отметьте это сообщение в блоге на том же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...