Автозапуск nuxt приложения с помощью PM2
PM2 - это диспетчер процессов с открытым исходным кодом, который поможет вам управлять вашим приложением и поддерживать его работу. В основном применяется в средах, где необходимо запустить приложение на NodeJS и забыть о нём, позволяющий кластеризировать приложение и гибко распределять нагрузку между ядрами процессора. Начать работу с PM2 несложно, он предлагается в виде простого и интуитивно понятного интерфейса командной строки.
Установка PM2 и настройка приложения
Последнюю версию PM2 можно установить с помощью NPM
npm install pm2@latest -g
После установки PM2 в корне нашего проекта необходимо создать файл конфигурации с названием ecosystem.config.js
и скопировать в него содержимое.
module.exports = {
apps: [
{
name: 'nuxtApp',
exec_mode: 'cluster',
instances: 'max',
script: './node_modules/nuxt/bin/nuxt.js',
args: 'start'
}
]
}
Немного о настройках. Подробнее о других параметрах можно прочитать на сайте PM2
Поле | Пример | Описание |
---|---|---|
name | "nuxtApp" | Имя приложения |
script | "./app/app.js" | Путь к скрипту |
args | "start" | Строка, содержащая все аргументы, переданные скрипту |
instances | "max" | Кол. запускаемых экземпляров |
exec_mode | "cluster" | Режим для запуска приложения |
Далее необходимо пересобрать приложение и запустить его через PM2 командой pm2 start
npm run build
pm2 start
Проверяем состояния нашего приложения
pm2 ls
Тут мы видим, что наше приложение в активном состоянии, не нагружает процессор и потребляет аж целых 142mb памяти.
┌────┬─────────┬─────────┬───┬────────┬─────┬─────────┐
│ id │ name │ mode │ ↺ │ status │ cpu │ memory │
├────┼─────────┼─────────┼───┼────────┼─────┼─────────┤
│ 0 │ nuxtApp │ cluster │ 0 │ online │ 0% │ 142.9mb │
└────┴─────────┴─────────┴───┴────────┴─────┴─────────┘
Автозапуск
Для автоматического запуска нашего приложения PM2 может генерировать скрипт, который будет поднимать все необходимые процессы, при запуске операционной системы или неожиданной её перезагрузки. Для этого выполняем команду pm2 startup
.
pm2 startup
Далее нужно скопировать и выполнить строку, которую выдает нам PM2 sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u user --hp /home/user
, и скрипт запуска будет настроен для вашей ОС.
[PM2] Init System found: systemd
[PM2] To setup the Startup Script, copy/paste the following command:
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u user --hp /home/user
При обновлении новой версии Node.js нужно будет обновить и скрипт запуска PM2! Используйте сначала
pm2 unstartup
, затемpm2 startup
После того как запустили все наши приложения, нужно сохранить их список, если хотите чтобы они запустились при перезагрузке компьютера.
pm2 save
PM2 берет на себя действия по мониторингу и поддержания нашего приложений в рабочем состоянии, требуя от нас минимум действий. Конечно, это не все возможности которыми обладает PM2, о других его возвожностях более подробно можно почитать на официальном сайте.