Running Node.js App with Supervisord on Homestead

Earlier I covered how to continuously run Node.js app with Forever.  In this article I will explain how to run Node.js app with Supervisord.  Since Homestead already has Supervisord installed, we will use it. First, let’s create a simple node application.  Edit script in Homestead installation to contain the following code:

cd /var/www
sudo mkdir node-web-server
sudo chown vagrant:vagrant node-web-server
sudo chmod 770 node-web-server
sudo chmod g+s node-web-server
cd node-web-server
npm init -y
npm install express --save
cat > server.js << EOF1

var express = require('express');
var app = express();

app.get('/', function(req, res){
   res.send('Hello Express!');
app.listen(3000, function(){
   console.log('Server is listening on port 3000');

Next, let's create a proxy nginx path to port 3000 in Homestead.yaml file.

- map:
  to: 3000
  type: proxy

Don't forget to add record to your hosts file.
Now lets reload our homestead vm instance with vagrant reload --provision
After the instance is up and running let's create and /etc/supervisor/conf.d/nodeserver.conf with the following content.

command=/usr/bin/node /var/www/node-web-server/server.js

From command line run
sudo supervisorctl reread
sudo supervisorctl update
to update Supervisord. When all set and done you should be able to go to and see you application. If the you restart the server, or node process gets stopped or killed, Supervisord will restart it back.

Share this article