Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Nodejs on Nearlyfreespeech?

I'm looking at an existing website, deployed on an NFS server. I'd like to rewrite some portions of it to run on nodejs. As far as I can tell, nodejs isn't supported by the NFS folk, but I am constrained to using their servers.

So, is there a way to shoe-horn nodejs onto a nearlyfreespeech server? Has anyone tried this successfully?

like image 449
blueberryfields Avatar asked Sep 10 '11 18:09

blueberryfields


3 Answers

As of 24/September/2014 NFS now support persistent processes:

  • Intro and overview - More power, more control, more insight, less cost
  • Official example - How-To: Django on NearlyFreeSpeech.NET
  • 3rd party example - Run node.js on NearlyFreeSpeech.Net

To summarise the process described in mopsled.com's third-party example:

1) In NFS.N's admin UI, select your site's domain shortname under Sites, then change that site's "Server Type" to "Custom" instead of PHP / Apache.

2) Put your Node server code somewhere in /home/protected/

3) Create a shell script (eg run.sh) file somewhere in /home/protected/ that contains the command(s) to start your server (eg npm run start or node server.js). NFS.N will automatically run this script as a continuous process using a "Daemon", which we'll configure in the next step.

4) Select "Daemons" in your site's NFS.N admin UI, and enter your server's startup shell script path in the "command line" field. Complete the other fields as you see fit.

5) NFS.N will now ensure that your custom server process will run indefinitely. Your web server will now be available at the port your server listens at. However, NFS.N doesn't give root access for your server to communicate through the normal "low-level" internet ports (eg :80 and :443), so if you want to serve those, you must use NFS.N's "Proxy" feature described in the next step.

6) If you need to listen on low-level ports: select "Add a Proxy" in your site's NFS.N admin UI and enter the relevant settings, checking the "Bypass Apache entirely" option and giving the port your server is listening on for the "Target Port" option.

That's it! You can now stop/restart the server's continuous process (the shell script that the Daemon is maintaining) in the Daemon's configuration page.

like image 156
4 revs, 3 users 65% Avatar answered Nov 02 '22 11:11

4 revs, 3 users 65%


NFS.net have a new "NFGI" architecture that may open the possibility to this:

NFGI can be made to work with other languages as well, making them first-class citizens of our service, just as fast and integrated as PHP currently is. This paves the way for making all sorts of frameworks viable that have traditionally been too slow when run through CGI. Rails. Catalyst. Django. We also believe it can be leveraged to make node.js work on our service, but we’re not 100% sure about that.

(Source: http://blog.nearlyfreespeech.net/2013/09/21/cgissh-upgrades/)

If you want this feature you can vote for it in their feature request system at https://members.nearlyfreespeech.net/support/voting

Although to be honest, I concur with earlier answers, using Node via CGI would lose some of the benefit...but would not be without its charms. Something like http://larsjung.de/node-cgi/ for NFS.net would be an interesting JavaScript replacement for PHP.

like image 2
Ishan Avatar answered Nov 02 '22 09:11

Ishan


The problem is not that NFS.net will not support NodeJS. The thing is that you can't have "long running processes", i.e. servers. Since you can't run servers, you can't run Node.

In fact, the only way you can have anything dynamic there is by using CGI. There's no reason why Javascript engine could not be used to generate pages in response to requests, but I am not sure that can be done with node.

like image 1
Stephen Eilert Avatar answered Nov 02 '22 11:11

Stephen Eilert