简体   繁体   中英

how to run node js on dedicated server?

I am doing a chat app and integrating it on a website. When i execute teh command 'node index.js' on the local server everything works fine. But when i try installing node js on a dedicated server and try to execute the command 'nohup node index.js &' through ssh it gives following message.

nohup: ignoring input and appending output to `nohup.out'

I had followed the method mentioned in this site for installation of node js on server https://www.a2hosting.com/kb/installable-applications/manual-installations/installing-node-js-on-managed-hosting-accounts

Can someone help me, please?

You first need to install Node in a correct way. I wrote a tutorial about it: How to get Node 6.7.0 on Linux (of course you can use newer versions, just change the version in the commands).

Basically it's something like this - change the version to the one you like:

# change dir to your home:
cd ~
# download the source:
curl -O https://nodejs.org/dist/v6.1.0/node-v6.1.0.tar.gz
# extract the archive:
tar xzvf node-v6.1.0.tar.gz
# go into the extracted dir:
cd node-v6.1.0
# configure for installation:
./configure --prefix=/opt/node-v6.1.0
# build and test:
make && make test
# install:
sudo make install
# make a symlink to that version:
sudo ln -svf /opt/node-v6.1.0 /opt/node

I recommend building Node from source and always running make test but you can also install a binary package which is faster - just make sure you understand the issues with paths and hashbang lines if you do so - more info on that and more install options are described in my tutorial .

Then you need to make sure that your application is started every time the server is restarted. I recommend using Upstart if you can.

Using Upstart, save something like this in /etc/init/YOURAPP.conf :

# When to start the service
start on runlevel [2345]

# When to stop the service
stop on runlevel [06]

# If the process quits unexpectadly trigger a respawn
respawn

# Start the process
exec start-stop-daemon --start --chuid node --make-pidfile --pidfile /www/YOURAPP/run/node-upstart.pid --exec /opt/node/bin/node -- /www/YOURAPP/app/app.js >> /www/YOURAPP/log/node-upstart.log 2>&1

Just change:

  • YOURAPP to the name of your own app
  • /opt/node/bin/node to your path to node
  • /www/YOURAPP/app/app.js to the path of your Node app
  • /www/YOURAPP/run to where you want your PID file
  • /www/YOURAPP/log to where you want your logs
  • --chuid node to --chuid OTHERUSER if you want it to run as a different user than node

(make sure to add a user with a name from --chuid above)

With your /etc/init/YOURAPP.conf in place you can safely restart your server and have your app still running, you can run:

start YOURAPP
restart YOURAPP
stop YOURAPP

to start, restart and stop your app - which would also happen automatically during the system boot or shutdown.

For more info see those answers about:

You can also use systemd for that but there are some differences as the system is much more complicated and often leads to some problems .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM