running node.js as a service behind nginx/varnish
TRANSCRIPT
![Page 1: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/1.jpg)
Running node.js
as a service behind ngnix/varnish
![Page 2: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/2.jpg)
why?
![Page 6: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/6.jpg)
Screen version 4.00.03jw4 (FAU) 2-May-06
Copyright (c) 1993-2002 Juergen Weigert, Michael Schroeder Copyright (c) 1987 Oliver Laumann
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program (see the file COPYING); if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Send bugreports, fixes, enhancements, t-shirts, money, beer & pizza to [email protected]
To use byobu (formerly screen-profiles), exit screen and run 'byobu'.
[Press Space or Return to end.]
![Page 7: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/7.jpg)
me@srv:~$ node /opt/myapp/index.js
![Page 8: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/8.jpg)
me@srv:~$ node /opt/myapp/index.js [detached from 2254.pts-0.srv] me@srv:~$
![Page 9: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/9.jpg)
me@srv:~$ node /opt/myapp/index.js [detached from 2254.pts-0.srv] me@srv:~$ X
![Page 10: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/10.jpg)
me@srv:~$ while true ; do > node /opt/myapp/index.js > done
![Page 11: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/11.jpg)
me@srv:~$ while true ; do > node /opt/myapp/index.js > done X
![Page 12: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/12.jpg)
•forever https://github.com/foreverjs/forever
•monit https://mmonit.com/monit/
•pm2 http://pm2.keymetrics.io
•systemd https://freedesktop.org/wiki/Software/systemd/
•upstart http://upstart.ubuntu.com
•etc …
![Page 13: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/13.jpg)
upstart
![Page 14: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/14.jpg)
# /opt/myapp/index.js
require("http").createServer(function (req, res) {
res.writeHead(200, { "Content-Type": "text/html" });
res.end("<h1>Hello, Fullstack JS Berlin!</h1>");
}).listen(1337, "0.0.0.0");
![Page 15: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/15.jpg)
$ sudo vi /etc/init/myapp.conf
![Page 16: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/16.jpg)
# /etc/init/myapp.conf
description "myapp"
author "thiagoalessio"
start on started mountall
stop on shutdown
respawn
respawn limit 99 5
script
exec sudo -u myapp /usr/bin/node /opt/myapp/index.js >> /var/log/myapp.log 2>&1
end script
post-start script
echo "myapp was started" >> /opt/myapp/logs/myapp.log
end script
![Page 17: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/17.jpg)
$ sudo start myapp myapp start/running, process 1351
![Page 18: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/18.jpg)
![Page 19: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/19.jpg)
$ sudo stop myapp myapp stop/waiting
![Page 20: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/20.jpg)
![Page 21: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/21.jpg)
•automatically starts on machine boot
•easily update code after deployments
![Page 22: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/22.jpg)
![Page 23: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/23.jpg)
![Page 24: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/24.jpg)
![Page 25: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/25.jpg)
![Page 26: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/26.jpg)
![Page 27: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/27.jpg)
![Page 28: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/28.jpg)
![Page 29: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/29.jpg)
![Page 30: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/30.jpg)
![Page 31: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/31.jpg)
![Page 32: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/32.jpg)
![Page 33: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/33.jpg)
![Page 34: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/34.jpg)
![Page 35: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/35.jpg)
![Page 36: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/36.jpg)
super fast!
![Page 37: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/37.jpg)
$ sudo vi /etc/varnish/default.vcl
![Page 38: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/38.jpg)
# This is a basic VCL configuration file for varnish. See the vcl(7)
# man page for details on VCL syntax and semantics.
#
# Default backend definition. Set this to point to your content
# server.
#
backend default {
.host = "127.0.0.1";
.port = "1337";
}
#
# … rest of the file …
![Page 39: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/39.jpg)
![Page 40: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/40.jpg)
$ sudo stop myapp myapp stop/waiting
![Page 41: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/41.jpg)
![Page 42: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/42.jpg)
![Page 43: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/43.jpg)
![Page 44: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/44.jpg)
![Page 45: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/45.jpg)
![Page 46: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/46.jpg)
![Page 47: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/47.jpg)
![Page 48: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/48.jpg)
![Page 49: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/49.jpg)
concurrency
![Page 50: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/50.jpg)
$ sudo vi /etc/nginx/sites-enabled/default
![Page 51: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/51.jpg)
# /etc/nginx/sites-enabled/default
upstream varnish { server 127.0.0.1:6081; }
upstream nodejs { server 127.0.0.1:1337; }
server {
listen 80;
server_name _;
root /opt/myapp;
location ~* \.(jpg|css|png)$ { access_log off; }
location /non-cacheable-content { proxy_pass http://nodejs; }
location / { proxy_pass http://varnish; }
}
![Page 52: Running node.js as a service behind nginx/varnish](https://reader034.vdocuments.site/reader034/viewer/2022042611/5872c7141a28ab0c718b6693/html5/thumbnails/52.jpg)