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

PM2 часто используют для Node.js-приложений, ботов, API и frontend SSR. Когда процесс падает, пользователь видит не красивую ошибку, а полностью недоступный сервис.

Коротко: нужно проверить статус процесса, логи PM2, env-переменные, порт и проксирование через nginx.

Почему это ломается

PM2-приложение падает из-за отсутствующих переменных окружения, неверной версии Node.js, занятого порта, ошибки сборки, неправильной рабочей директории, отсутствующего ecosystem.config.js или ненастроенного pm2 startup после перезагрузки.

Что проверяю в первую очередь

  • что показывает pm2 status
  • какая ошибка в pm2 logs
  • на каком порту должно слушать приложение
  • есть ли нужные env-переменные
  • настроен ли nginx proxy и pm2 startup

Как я это чиню

Я проверяю приложение отдельно от nginx: сначала локальный порт и процесс PM2, затем проксирование и внешний домен.

  • исправляю ecosystem config и рабочую директорию
  • добавляю нужные env-переменные
  • настраиваю правильную версию Node.js
  • чиню порт и nginx proxy_pass
  • закрепляю автозапуск PM2 после reboot

Что подготовить перед обращением

  • домен или порт приложения
  • pm2 status и logs
  • ecosystem config, если есть
  • доступ к серверу
  • как приложение запускается локально

Как выглядит нормальный результат

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

Чего лучше не делать

Не запускайте приложение одновременно через npm start, pm2 и systemd без схемы. Несколько способов запуска могут конфликтовать за порт.

Вопросы и ответы

Почему pm2 status показывает online, а сайт не открывается?

Приложение может слушать другой порт, падать на запросе или nginx может проксировать не туда.

Что делать с endless restart?

Смотреть pm2 logs: обычно там ошибка кода, env или подключения к базе.

Нужен ли pm2 save?

Да, после настройки процессов стоит сохранить список, чтобы он восстановился после перезагрузки.

Можно ли использовать PM2 для бота?

Да, если бот написан на Node.js и должен работать постоянно.

Нужна похожая задача?

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

Итог

PM2 нужно настраивать как управляемый сервис: процесс, env, порт, логи, nginx и автозапуск должны быть согласованы.