###The Issue With Forever Forever is great for running node services, with a minor setback: the word "forever" doesn't apply to system reboots.
###The solution, run node apps as a system service logged in as root
Contents for node-app.conf
start on filesystem and started networking respawn chdir /home/deploy/node-app #deployment directory env NODE_ENV=production env PORT=3000 exec /usr/local/bin/node server/cluster.js #start command - no forever needed, if it fails, the service restarts
SUCCESS! Now the app runs on reboot! You can also control the app as a service
service node-app start #node-app is filename of service.conf file service node-app stop service node-app restart #run this one command on deploy to either start | restart the service
###So how does my deploy script change?
Run visudo to give
deploy user permission to run only the node service without a password
echo "deploy ALL=(root) NOPASSWD: /sbin/restart node-app" >> /etc/sudoers #this can be edited later by running visudo as root user
Now, run this with your deploy script as your deploy user
sudo restart node-app