Как запустить приложение node.js в качестве фоновой службы?

Таким образом:

public static Process GetParent(this Process process)
{
  try
  {
    using (var query = new ManagementObjectSearcher(
      "SELECT * " +
      "FROM Win32_Process " +
      "WHERE ProcessId=" + process.Id))
    {
      return query
        .Get()
        .OfType<ManagementObject>()
        .Select(p => Process.GetProcessById((int)(uint)p["ParentProcessId"]))
        .FirstOrDefault();
    }
  }
  catch
  {
    return null;
  }
}
432
задан mikemaccana 10 July 2017 в 16:02
поделиться

3 ответа

ОБНОВЛЕНИЕ : я обновлен, чтобы включить последние версии из pm2:

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

https://github.com/unitech/pm2

http://pm2.io

  • действительно полезная функция мониторинга -> довольно «графический интерфейс» для мониторинга нескольких процессов с помощью pm2 monit или списка процессов с pm2 list
  • организованным управлением журналом -> pm2 logs
  • прочее stuff:
    • Конфигурация поведения
    • Поддержка карты источника
    • Совместимость с PaaS
    • Watch & amp; Перезагрузка
    • Система модулей
    • Макс. Перезагрузка памяти
    • Кластерный режим
    • Горячая перезагрузка
    • Рабочий процесс разработки
    • Сценарии запуска
    • Автоматическое завершение
    • Рабочий процесс развертывания
    • Мониторинг ключевых показателей
    • API
26
ответ дан Hutch 10 July 2017 в 16:02
поделиться

Если вы запускаете nodejs на сервере Linux, я думаю, что это лучший способ.

Создать сценарий службы и скопировать в /etc/init/nodejs.conf

Запустить службу: запуск узла sudo service

Остановить службу: остановка узла sudo service

Служебный скрипт

description "DManager node.js server - Last Update: 2012-08-06"
author      "Pedro Muniz - pedro.muniz@geeklab.com.br"

env USER="nodejs" #you have to create this user 
env APPNAME="nodejs" #you can change the service name
env WORKDIR="/home/<project-home-dir>" #set your project home folder here
env COMMAND="/usr/bin/node <server name>" #app.js ?

# used to be: start on startup
# until we found some mounts weren't ready yet while booting:
start on started mountall
stop on shutdown

# Automatically Respawn:
respawn
respawn limit 99 5

pre-start script
    sudo -u $USER echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Starting" >> /var/log/$APPNAME.log
end script

script
    # Not sure why $HOME is needed, but we found that it is:
    export HOME="<project-home-dir>"  #set your project home folder here
    export NODE_PATH="<project node_path>"

    #log file, grant permission to nodejs user
    exec start-stop-daemon --start --make-pidfile --pidfile /var/run/$APPNAME.pid --chuid $USER --chdir $WORKDIR --exec $COMMAND >> /var/log/$APPNAME.log 2>&1
end script

post-start script
   # Optionally put a script here that will notifiy you node has (re)started
   # /root/bin/hoptoad.sh "node.js has started!"
end script

pre-stop script
    sudo -u $USER echo "[`date -u +%Y-%m-%dT%T.%3NZ`] (sys) Stopping" >> /var/log/$APPNAME.log
end script
4
ответ дан Pedro Muniz 10 July 2017 в 16:02
поделиться

Чтобы завершить различные предлагаемые варианты, вот еще одна: команда daemon в GNU / Linux, о которой вы можете прочитать здесь: http://libslack.org/daemon/manpages/daemon. 1.html . (извиняюсь, если это уже упоминалось в одном из комментариев выше).

2
ответ дан ravi 10 July 2017 в 16:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: