Для управления приложениями Node.js на рабочем сервере часто требуется менеджер процессов, который обеспечит бесперебойную работу ваших приложений и автоматическое восстановление после сбоев. PM2 — один из самых популярных менеджеров процессов для Node.js, предлагающий мощные функции, такие как мониторинг процессов, управление журналами и режим кластера.
Если вы запускаете приложение на экземпляре Google Cloud Ubuntu, вы можете столкнуться с ситуацией, когда процессы PM2 видны только тому пользователю, который их запустил. Это может быть проблематично, если на вашем сервере несколько пользователей, например разработчики, системные администраторы или сценарии автоматического развертывания. В этом сообщении блога мы рассмотрим шаги по настройке PM2 как общесистемной службы, сделав ее доступной для всех пользователей на сервере.
По умолчанию PM2 запускается как процесс под пользователем, который его запустил. Это означает, что если вы подключитесь к своему серверу по SSH от имени одного пользователя и запустите процесс PM2, этот процесс не будет виден другому пользователю, который входит в систему через SSH. Чтобы решить эту проблему, мы можем настроить PM2 для работы в качестве службы на системном уровне. Этот подход имеет ряд преимуществ:
Прежде чем мы начнем, убедитесь, что у вас есть следующее:
Чтобы все пользователи могли получить доступ к PM2, его следует установить глобально. Вы можете установить PM2 глобально, используя npm:
sudo npm install -g pm2
Эта команда устанавливает PM2 в глобальный каталог npm, делая его доступным для всей системы.
Далее нам нужно настроить PM2 для работы в качестве службы. Это позволит PM2 управлять процессами на уровне системы, а не привязываться к конкретному сеансу пользователя.
Выполните следующую команду, чтобы сгенерировать необходимый сценарий запуска для PM2:
pm2 startup
Эта команда определяет систему инициализации, используемую вашим экземпляром Ubuntu (обычно systemd), и предоставляет команду, которую необходимо выполнить с помощью sudo, чтобы настроить PM2 как общесистемную службу. Вывод будет выглядеть примерно так:
[PM2] Init System found: systemd [PM2] To setup the Startup Script, copy/paste the following command: sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u--hp /home/
Здесь
Скопируйте команду, указанную в выводе предыдущего шага, и выполните ее. Например:
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u johndoe --hp /home/johndoe
Эта команда создает службу systemd, которая запускает PM2 с правильными переменными среды и контекстом пользователя.
Если у вас уже есть процессы, работающие под PM2, которые вы хотите сохранить при перезагрузках, вам необходимо сохранить текущий список процессов. При этом создается файл дампа, который PM2 будет использовать для восстановления процессов при запуске системы:
pm2 save
Команда pm2 save сохраняет текущий список управляемых процессов в файл JSON в ~/.pm2/dump.pm2. Этот файл загружается автоматически при запуске PM2, обеспечивая восстановление ваших приложений после перезагрузки.
Чтобы PM2 запускался автоматически при загрузке системы, необходимо включить службу:
sudo systemctl enable pm2-johndoe
Замените johndoe на соответствующее имя пользователя. Эта команда включает службу PM2, гарантируя ее запуск при каждой загрузке системы.
Теперь, когда PM2 настроен как общесистемная служба, он должен быть доступен любому пользователю на сервере. Чтобы проверить состояние процессов или просмотреть их список, любой пользователь может запустить:
pm2 list
Эта команда отобразит список процессов, управляемых общесистемной службой PM2, независимо от того, какой пользователь вошел в систему.
Если вам нужно, чтобы журналы PM2 были доступны нескольким пользователям, вам может потребоваться настроить права доступа к файлам или настроить PM2 для хранения журналов в общем каталоге. Это гарантирует, что все пользователи смогут просматривать и управлять журналами процессов, запущенных под PM2.
Чтобы изменить каталог файла журнала, вы можете использовать следующую переменную среды:
export PM2_HOME=/path/to/shared/pm2/home
Установите это в глобальном файле конфигурации, например /etc/environment, чтобы сделать его постоянным между сеансами.
После настройки PM2 как службы пользователи смогут управлять процессами с помощью стандартных команд PM2. Однако, в зависимости от разрешений и ролей пользователя, для некоторых команд может потребоваться доступ sudo. Например:
sudo pm2 list
Эта команда выводит список процессов, управляемых общесистемной службой PM2, что упрощает совместную работу администраторов и разработчиков по управлению сервером.
Настройка PM2 в качестве общесистемной службы на вашем экземпляре Ubuntu гарантирует, что ваши приложения Node.js надежно управляются и доступны всем пользователям на сервере. Эта настройка особенно полезна в средах с несколькими пользователями или автоматизированными процессами развертывания, обеспечивая надежный и централизованный способ управления приложениями.
Следуя шагам, описанным в этом руководстве, вы можете гарантировать, что PM2 доступен всем пользователям, ваши процессы автоматически перезапускаются после перезагрузки системы, а журналы легко доступны. Это не только упрощает управление сервером, но и повышает надежность ваших приложений в рабочей среде.
Удачного программирования!
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3