Управление процессами Umami с помощью Supervisor
Здравствуйте, я бездарь.
Хотя официальный Umami рекомендует управление процессами с помощью pm2, я хотел бы использовать более простой и давно существующий Supervisor для управления процессами Umami.
Что такое Supervisor
Он позволяет легко демонизировать процессы и настраивать файлы журналов в случае сбоя с помощью *.conf.
Казалось, что разработка на некоторое время остановилась, но благодаря движению Systemd Free он снова набрал популярность, и теперь можно демонизировать и управлять процессами, которые изначально работали с другими init, с помощью Supervisor.
Поскольку он уже установлен, я пропущу описание процесса установки.
Настройка
Создайте файл конфигурации как umami.conf.
sudo vim /etc/supervisor/conf.d/umami.conf
Я написал следующее:
[program`umami]
command=npm start
directory=/var/www/html/umami ; Каталог приложения
autostart=true ; Автоматически запускать процесс при старте сервера
autorestart=true ; Автоматически перезапускать процесс, если он завершился
stderr_logfile=/var/log/umami.err.log ; Местоположение файла журнала стандартных ошибок
stderr_logfile_maxbytes=1MB ; Максимальный размер файла журнала
stdout_logfile=/var/log/umami.out.log ; Местоположение файла журнала стандартного вывода
stdout_logfile_maxbytes=1MB ; Максимальный размер файла журнала
environment=DATABASE_URL="YourDB",APP_SECRET="YourSecret",PORT="YourPort",HOSTNAME="YourHost" ;
user=test_user ; Пользователь для выполнения
Кстати, сейчас уже поздно, но изначально я должен был разместить его в /var/www/umami...
Выполнение
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start umami
sudo supervisorctl status umami
Если вы это сделаете,
umami RUNNING pid 801, uptime 0`19`12
Если отображается это, значит, он работает нормально. Если же он не запустился,
view /var/log/umami.err.log
view /var/log/umami.out.log
проверьте причину, по которой он не запускается.
Supervisor — это хорошо
Очень хорошо, что им можно легко управлять только с помощью файлов *.conf.
Хотя pm2 также показывает использование памяти, я предпочитаю что-то такое же простое, как supervisord, потому что я беспокоюсь о будущих зависимостях библиотек, связанных с npm.
Кроме того, я не вижу необходимости запускать управление процессами в среде JavaScript. До скорого.
Всего наилучшего.