How do I run a node.js app as a background service?

前端 未结 26 1058
隐瞒了意图╮
隐瞒了意图╮ 2020-11-22 05:28

Since this post has gotten a lot of attention over the years, I\'ve listed the top solutions per platform at the bottom of this post.


Original post

26条回答
  •  广开言路
    2020-11-22 06:24

    If you are running nodejs in linux server, I think this is the best way.

    Create a service script and copy to /etc/init/nodejs.conf

    start service: sudo service nodejs start

    stop service: sudo service nodejs stop

    Sevice script

    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/" #set your project home folder here
    env COMMAND="/usr/bin/node " #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=""  #set your project home folder here
        export 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
    

提交回复
热议问题