Standard

install node.js centos 6

#yum -y update
#yum -y groupinstall "Development Tools"
#yum -y install screen

Node.js Installation

#cd /usr/src
#wget http://nodejs.org/dist/v0.10.4/node-v0.10.4.tar.gz
#tar zxf node-v0.10.4.tar.gz
#cd node-v0.10.4
./configure
make
make install

#cd /home/anario/
#touch app.js

var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello Anario\n');
}) .listen(8124, '0.0.0.0');
console.log ('Server running at http://server:8124');

#node app.js
#npm install forever -g
#forever start app.js | [forever stop app.js]

Set up an init.d Script for Forever

#!/bin/bash
#
# Service script for a Node.js application running under Forever.
#
# This is suitable for Fedora, Red Hat, CentOS and similar distributions.
# It will not work on Ubuntu or other Debian-style distributions!
#
# There is some perhaps unnecessary complexity going on in the relationship between
# Forever and the server process. See: https://github.com/indexzero/forever
#
# 1) Forever starts its own watchdog process, and keeps its own configuration data
# in /var/run/forever.
#
# 2) If the process dies, Forever will restart it: if it fails but continues to run,
# it won't be restarted.
#
# 3) If the process is stopped via this script, the pidfile is left in place; this
# helps when issues happen with failed stop attempts.
#
# 4) Which means the check for running/not running is complex, and involves parsing
# of the Forever list output.
#
# chkconfig: 345 80 20
# description: my application description
# processname: my_application_name
# pidfile: /var/run/my_application_name.pid
# logfile: /var/log/my_application_name.log
#

# Source function library.
. /etc/init.d/functions

NAME=node
SOURCE_DIR=/home/anario/
SOURCE_FILE=app.js

user=root
pidfile=/var/run/$NAME.pid
logfile=/var/log/$NAME.log
forever_dir=/var/run/forever

node=node
forever=/usr/local/bin/forever
sed=sed

export PATH=$PATH:/usr/local/bin/node:/usr/local/bin/forever
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules

start() {
 echo "Starting $NAME node instance: "

 if [ "$foreverid" == "" ]; then
 # Create the log and pid files, making sure that
 # the target use has access to them
 touch $logfile
 chown $user $logfile

 touch $pidfile
 chown $user $pidfile

 # Launch the application
 daemon --user=root \
 $forever start -p $forever_dir --pidFile $pidfile -l $logfile \
 -a -d $SOURCE_DIR/$SOURCE_FILE
 RETVAL=$?
 else
 echo "Instance already running"
 RETVAL=0
 fi
}

stop() {
 echo -n "Shutting down $NAME node instance : "

$forever stopall
 RETVAL=$?
}

if [ -f $pidfile ]; then
 read pid < $pidfile
else
 pid=""
fi

if [ "$pid" != "" ]; then
 # Gnarly sed usage to obtain the foreverid.
 sed1="/$pid\]/p"
 sed2="s/.*\[\([0-9]\+\)\].*\s$pid\.*/\1/g"
 foreverid=`$forever list -p $forever_dir | $sed -n $sed1 | $sed $sed2`
else
 foreverid=""
fi

case "$1" in
 start)
 start
 ;;
 stop)
 stop
 ;;
 status)
 status -p ${pidfile}
 ;;
 *)
 echo "Usage: {start|stop|status}"
 exit 1
 ;;
esac
exit $RETVAL

/etc/init.d/node start

more