For the complete documentation index, see llms.txt. This page is also available as Markdown.

Настройка и работа PM2 для Frontend

PM2 используется для запуска Frontend-сервера Angular SSR в рабочем режиме (Production).

В отличие от обычного статического сайта, Frontend iEXExchanger запускает Node.js-приложение, которое отвечает за генерацию HTML-страниц, обработку маршрутов, мультиязычность, SEO и взаимодействие с Backend.

PM2 позволяет:

  • запускать Frontend как фоновый процесс;

  • автоматически перезапускать сервер при сбоях;

  • сохранять логи работы;

  • автоматически запускать Frontend после перезагрузки сервера;

  • управлять запуском, остановкой и перезапуском приложения.

По умолчанию Frontend работает на локальном порту:

127.0.0.1:4000

Nginx принимает запросы пользователей и передаёт их в Angular SSR:

Перед началом

Перед настройкой убедитесь, что:

  • Frontend уже установлен;

  • выполнена сборка проекта;

  • настроен Nginx;

  • установлен Node.js;

  • установлен PM2;

  • существует файл .env;

  • существует папка dist/exchanger.

Где находится PM2-конфигурация

Файл конфигурации PM2 находится в корне Frontend-проекта:

Структура проекта должна выглядеть примерно так:

Создание папки логов

Перед первым запуском создайте папку для логов:

В ней будут храниться журналы работы Frontend.

Рекомендуемая конфигурация PM2

Для большинства проектов рекомендуется использовать следующую конфигурацию:

Данная конфигурация подходит для большинства серверов и рекомендуется использовать её без изменений.

Описание основных параметров

1

name

Название процесса.

Именно это имя используется во всех командах PM2.

Например:

2

script

Файл запуска Angular SSR.

Если структура проекта стандартная, менять этот путь не требуется.

3

cwd

Рабочая директория процесса.

Frontend использует текущую директорию для поиска файла .env.

Если параметр указан неправильно, приложение может не загрузить настройки окружения.

4

instances

Количество одновременно работающих процессов.

По умолчанию рекомендуется:

Этого достаточно для большинства обменных пунктов.

5

exec_mode

Режим запуска процесса.

Рекомендуемое значение:

Именно этот режим используется по умолчанию.

6

autorestart

Автоматический перезапуск после сбоя.

Рекомендуется всегда оставлять включённым.

7

watch

Автоматический перезапуск при изменении файлов.

Для Production всегда рекомендуется использовать:

8

max_memory_restart

Максимальный объём памяти, после которого PM2 автоматически перезапустит процесс.

По умолчанию:

Рекомендации:

9

env

Переменные окружения.

Основные параметры:

  • NODE_ENV включает production-режим;

  • PORT должен совпадать с настройкой Nginx;

  • HOST ограничивает доступ только локальным сервером;

  • PM2=true сообщает приложению, что оно запущено через PM2.

10

wait_ready

Frontend сообщает PM2 о готовности после полного запуска сервера.

Рекомендуется всегда оставлять включённым.

11

listen_timeout

Максимальное время ожидания запуска.

По умолчанию 10 секунд.

12

kill_timeout

Время корректного завершения процесса.

13

Логи

out.log

Обычный вывод приложения.

err.log

Ошибки Frontend.


Почему рекомендуется использовать fork

Для большинства проектов рекомендуется:

Такой режим:

  • проще в настройке;

  • проще диагностируется;

  • использует меньше памяти;

  • отлично подходит для большинства обменных пунктов.

Начинать работу рекомендуется именно с него.

Когда использовать cluster

Режим cluster можно использовать только при высокой нагрузке.

Например:

Использовать cluster рекомендуется, если:

  • сервер имеет несколько CPU;

  • достаточно оперативной памяти;

  • сайт получает большое количество запросов;

  • Frontend уже стабильно работает в режиме fork.

Не рекомендуется сразу использовать:

Если сервер имеет 8 ядер, PM2 создаст 8 процессов, что значительно увеличит потребление памяти.


Запуск Frontend

Перейдите в каталог проекта:

Запустите Frontend:

Проверьте статус:

Если всё настроено правильно, процесс будет иметь статус:

После этого сохраните конфигурацию:

Автоматический запуск после перезагрузки

Чтобы Frontend автоматически запускался после перезагрузки сервера:

PM2 покажет команду, которую необходимо выполнить от имени root.

После выполнения снова сохраните процессы:

Проверить можно командой:

Перезапуск Frontend

После:

  • обновления Frontend;

  • изменения .env;

  • изменения PM2-конфигурации;

выполните:

Параметр:

заставляет PM2 перечитать файл .env.

Если изменился только код приложения:

Остановка Frontend

Остановить:

Запустить снова:

Удалить процесс:

После повторного запуска выполните:

Просмотр логов

Просмотр логов в реальном времени:

Последние строки:

Также логи находятся в папке:


Очистка логов

Очистить логи PM2:

Проверить размер папки:

Проверка работы Frontend

Проверьте локальный порт:

Если сервер отвечает, Frontend успешно работает.

Если ответа нет:


Проверка файла .env

Перед запуском или перезапуском Frontend рекомендуется проверить основные параметры файла .env.

Особое внимание обратите на:

Если используется несколько доменов или www, добавьте их через запятую.

Также проверьте поддерживаемые языки:

И язык по умолчанию:

После изменения любого из этих параметров необходимо выполнить:


Связь PM2 и Nginx

PM2 запускает Angular SSR на:

Nginx принимает запросы пользователей и передаёт их Frontend.

Если PM2 остановлен, Nginx не сможет получить ответ и пользователь увидит ошибку:


После обновления Frontend

После загрузки новой версии Frontend рекомендуется:

  1. Проверить наличие новой сборки:

  1. Проверить файл .env.

  2. Перезапустить Frontend:

  1. Проверить статус:

  1. Проверить работу сайта:


Типовые проблемы

502 Bad Gateway

Проверьте:

Frontend работает, но сайт не открывается

Проверьте:

  • настройки Nginx;

  • порт 4000;

  • совпадает ли порт в .env, PM2 и Nginx.

Ошибка DEFAULT_LANGUAGE или SUPPORTED_LANGUAGES

Проверьте параметры:

После изменения:

Ошибка ALLOWED_HOSTS

Проверьте:

Не рекомендуется использовать:

Backend API недоступен

Проверьте:

Не используйте:

или

PM2 не использует .env

Убедитесь, что:

  • ecosystem.config.cjs находится в корне проекта;

  • используется:

  • Frontend перезапущен командой:

Краткий чек-лист

  1. Создайте папку логов.

  1. Проверьте .env.

  2. Проверьте ecosystem.config.cjs.

  3. Запустите Frontend.

  1. Проверьте статус.

  1. Сохраните процессы.

  1. Настройте автозапуск.

  1. Проверьте локальный порт.

  1. Проверьте работу сайта.


Рекомендуемая настройка

Для большинства обменных пунктов рекомендуется использовать:

Переходить на режим cluster имеет смысл только после появления высокой нагрузки и при наличии достаточного запаса процессорных ресурсов и оперативной памяти.

Последнее обновление

Это было полезно?