Node.js upstart vs forever

前端 未结 4 1542
不知归路
不知归路 2021-02-02 17:27

I am looking to daemonize my Node.js application. What\'s the difference between upstart and forever? Also, are there other packages I might want to considering looking at?

相关标签:
4条回答
  • 2021-02-02 18:06

    The main difference in objective is that upstart is designed to start an application on system boot. Forever doesn't have that and instead is focused on keeping a node.js script running despite crashes (most likely unhandled exceptions). You will be wise to combine the two .. i.e. start forever yourscript.js from upstart (on system boot).

    That said you will need to look at your platform specific version of upstart equivalent. Upstart was never on windows and is now deprecated for ubuntu / debian : http://www.markshuttleworth.com/archives/1316

    0 讨论(0)
  • 2021-02-02 18:09

    In 2017, alternatives could be :

    • pm2. Robust, strong community, production-grade solution. Can manage non-node scripts as well. My personal choice.
    • StrongLoop (slc). Node-only. Production-oriented as well, includes build/packaging, deployment to docker, load-balancing and profiling, but is more recent. Looks promising.

    Here is a (maybe biased) comparison of both with Forever.

    0 讨论(0)
  • 2021-02-02 18:12

    upstart is a general utility for daemonizing an application. Forever is designed for Node.js. For most purposes, forever is better for Node.js applications as it is simpler, tuned towards node.js and easy to configure. Just try a few tutorials on upstart and you will agree with me.

    0 讨论(0)
  • 2021-02-02 18:21

    As pointed out in the comments, upstart will be used to start the forever script, since upstart has hooks for system events (like shutdown and startup of your server).

    The other differences are:

    • Upstart was developed for Linux, while forever is platform-independent.
    • Forever is specific to nodejs, and has some pretty cool features with regards to restarting your server after it crashes, and logging.
    • Forever is sufficient for development environment, while upstart is necessary if you need to have some control over how your server is stopped. For example, on shutdown, the forever process would simply get killed, but, with an upstart script, you can collect logs and notify the admin.
    • Upstart allows you to add other monitoring tools, like Monit.

    Among the available other solutions, you can try daemon, which is equivalent to forever.

    I would disagree with @leorex with regards to upstart setup. Check out this blog post for an excellent example.

    0 讨论(0)
提交回复
热议问题