Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Where to place node.js files on server?

Tags:

node.js

ssh

I have just gotten a VPS to bring my first node.js project online, but I am wondering where do I place the node files like app.js if I want it to be accessible at http://www.mywebsite.com:3000?

Right now, to host a website, I am using WHM to create a cPanel account, which creates /home/cpanelusername and my HTML/PHP files all go into /home/cpanelusername/public_html. Where does node.js files go to? Or did I get this step wrong as well?

On my Mac where I developed the node app, I simply cd into the directory containing the node file and run node app.js

like image 870
Nyxynyx Avatar asked Nov 28 '11 20:11

Nyxynyx


1 Answers

You have to execute app.js file using the node binary, just like you do in local development. That means that you should probably make that execution a service call, the details of which depend on your linux distro. If it's not a service call, then executing it in ssh will mean that the app stops working once you log out of ssh.

For example, in Ubuntu server (which I use) I have an Upstart script which automatically runs my node.js app automatically on system start and log to /var/log. An example of the file, named /etc/init/myapp.js.conf is:

description "myapp server"
author      "Me"

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

script
    # We found $HOME is needed. Without it we ran into problems
    export HOME="/root"

    exec node /home/me/myapp/myapp.js 2>&1 >> /var/log/myapp.log
end script

Replace names, etc. as necessary.

Edit to add: You can then start and stop your service by running: sudo start myapp.js or sudo stop myapp.js

like image 148
Matt Avatar answered Oct 18 '22 15:10

Matt