nodejs / help

:sparkles: Need help with Node.js? File an Issue here. :rocket:
1.48k stars 284 forks source link

node app as service #114

Closed mh-cbon closed 8 years ago

mh-cbon commented 8 years ago

Hi,

I m digging to find the right way to setup and initialize a node server as a service on various platform. A friendly, simple and automated way which does not involve a sysadmin operator to realize it.

As always, there s a bunch of module available in the wild, with more or less good tests, integration, support, maintenance. Some clearly tries to achieve the goal, some does far more, some are limited to fix a part of the problem only.

I m mainly talking about all those great modules,

If i d go through each and tries to summarize their abilities, correct me if i m wrong,

I m wondering

I d be happy to hear your thoughts, if any, and i hope this won t be misunderstood as free criticism which is not my intent. I m rather trying to evaluate my current options to move on my next steps to solve my own needs.

Knighton910 commented 8 years ago

If I'm honest: https://gitter.im/nodejs/node that is the better place to ask that question.

Knighton910 commented 8 years ago

@mh-cbon how is it going with this?

mh-cbon commented 8 years ago

I started to dig more specifically solutions per system, i found that strongloop provides something really nice and cool https://github.com/strongloop/strong-service-upstart https://github.com/strongloop/strong-service-systemd https://github.com/strongloop/strong-service-install

I feel it is not satisfactory, for few preliminary reasons,

I need to dig it more, and decide how the functionality will be provided. I think i ll go for an automated system when possible, and fallback on user input (inquirer) when details are missing.

The immediate job is to gather information about how other oses works, then the coding job can be started, i dont think it s going to be very difficult, but i m sure there s going to be numerous module to init, code, release.

Knighton910 commented 8 years ago

https://blog.risingstack.com/continuous-deployment-of-node-js-applications/ Is a pretty good article.

I'm surprised that gitter.im didn't help much. Usually they always have alot of input to say. Anyways I like forever & pm2 but strongloop-upstart have potential but probably not a feature packed as you like, as far as gui instead of cli I'd like to be more helpful, but not much exposure in this area.

mh-cbon commented 8 years ago

yup that s the ideal workflow i d like to implement. I only need to make it real with a matrix of multiple operating systems types * multiple oses versions * multiple node versions. There should be something out there to help me on that matter (way more than nvm). The thing is as i don t have a battery of servers available, the time to run will be very, very, long. Unless, i try to use travis to spawn vagrant boxes, it that works, i m not sure they ll be happy with that. This is probably the most tricky point as it is not only a matter of quality of coding, but a matter of material ($$$).

I ll try to summarize things tbd.

Knighton910 commented 8 years ago

Hey how's it going with this?

subfuzion commented 8 years ago

@mh-cbon If you're thinking through all of this as an academic issue and because you enjoy it, that's great. Generally all the choices you just mentioned will be influenced by your existing init philosophy, distro and version, and maybe other factors. I suggest you just use forever with the init system you're already using (such as upstart), make sure you have a monitoring solution in place for production, be done with it, and focus on getting other tasks done! No need for paralysis by analysis. If you find a limitation to this approach, then investigate the next alternative with a bit more data under your belt. Good luck!

mh-cbon commented 8 years ago

@subfuzion Hi, thanks for advice. yeah agreed when you say to not stay stuck while doing analysis. This said, a bit of pre engineering to do the right choice worth at the end. For example, it would have been great that node-linux is a plug able system, instead of this monolithic project.

This said, at that very moment i have been struggling while virtualizing windows to implement testing via its scripting capabilities (i m having epic debate about powershell since this news window's bash came out yesterday). I m still having lots of difficulties here to test windows 7/8/10, and more if possible. Mainly a problem about building/finding workable boxes.

I m slowly moving on to macos now (images are 10 to 13gb each..). I ll keep moving on for linux-friendly oses.

An important remark, i won t use forever or pm2 ect, the goal is to provide pieces to integrate with per system services management in an automated fashion for non enterprise level use cases. /If you want to use pm2, you still need to set it up itself as a service of the system, afaik/ If you are a company i m afraid this project won t be the definitive answer to your need, the options, use cases and possibilities are so numerous that it will complexify the project too much, and kill it. Which i want not. Finding the middle way would be a great thing.

Last word, let s be pragmatic and provide small, re usable, focused and functional module to solve every needed functionality one after the other. So that at worst, it will still remains workable modules for future attempts or whatever else needs to be solved.

If one is passing here to find quick answers, quick modules, ready to go, you can take look to my screening of existing modules https://github.com/mh-cbon/problems-and-solutions/tree/master/system-services

hth

mh-cbon commented 8 years ago

It starts to show up,

It was not always straight forward

I m also looking for a cool module to perform sudo command with password prompt support, the one i found seems not so good, to me.

mh-cbon commented 8 years ago

Two problems solved,

BTW, a better module to support windows elevated command https://github.com/mh-cbon/aghfabsowecwn

Knighton910 commented 8 years ago

closing for now, reopen to pursue

happy coding 😃