I got my simple movies node.js app running through Apache using mod_proxy
$ a2enmod proxy_http $ a2enmod proxy
Configured under sites-available like so:
$ cat /etc/apache2/sites-available/movies <VirtualHost *:80> ServerName actualfqdnofhost.bluebones.net ServerAlias movies.bluebones.net ProxyPass / http://127.0.0.1:3000/ <Proxy *> Allow from all </Proxy> </VirtualHost>
(This assumes that your app listens on port 3000 when running.)
Then to ensure it gets restarted when the machine does I created the following file as /etc/init/movies.conf
$ cat /etc/init/movies.conf description "movies.bluebones.net on node.js" author "bakert" start on startup stop on shutdown script export MOVIES_ROOT=/srv/movies export EXPRESS_ROOT=$MOVIES_ROOT/src/express cd $EXPRESS_ROOT && exec sudo -u www-data NODE_PATH=$NODE_PATH:/opt/local/node/lib/node_modules/ EXPRESS_ENV=production /opt/local/node/bin/node $EXPRESS_ROOT/app.js 2>&1 >>$MOVIES_ROOT/logs/node.log end script
Which also lets me stop and start my app with:
$ start movies $ stop movies
Very helpful, thanks for this!