Using NodeJS App with Apache

Pierangelo
2 min readJan 11, 2020

--

How setting Apache2 using proxy for expose a NodeJS app.

First install apache2:

apt update apt install apache2

install nodejs e npm

apt install nodejsapt install npm

copy your app in /var/www/demo

here a repo to my demo app if you want use it:

install pm2

npm install -g pm2

we use pm2 for start a daemon of our app, and for enable an autostart in case of reboot of our machine

from your terminal go into the root folder of the app

cd /var/www/demo

and launch the command:

pm2 start app.js

after that we must config an automatic start in case of reboot:

so launch this command:

pm2 startup systemd

and copy the env that will be print and paste it in the terminal, in my case is this:

sudo env PATH=$PATH:/usr/bin /usr/local/lib/node_modules/pm2/bin/pm2 startup systemd -u pierangelo — hp /home/pierangelo

now we go to settings apache2

as first things we must enable two modules

  • proxy
  • proxy_http

so from terminal launch this:

a2enmod proxya2enmod proxy_http

after that go in /etc/sites/available and create a file named myapp.conf

myapp.conf

<VirtualHost *:80>
ServerName node.miosito.it #qui ci va il nome a dominio del sito
ProxyPreserveHost on
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>

check carefully, in ProxyPass and ProxyPassReverse you mast show the localhost with the port that you use in your nodejs app.

after that enable your virtualhost:

a2ensite myapp.conf

and restart apache2

service apache2 restart

now you should see your app running on your domain address.

watch video tutorial here:

--

--

Pierangelo

Full Stack developer with a rising interest for DevOps field…