There are several ways to install NodeJS (see the Digital Ocean tutorial in the links below). Here, only the binary installation will be presented.
To install the EPEL repository, type:
# yum install -y epel-release
To install the NodeJS software, type:
# yum install -y nodejs
The title of this tutorial is slightly misleading. NodeJS is not a service by itself: it’s an engine.
Create the nodejs user & group:
# adduser -r nodejs
Note: The -r option normally adds system user & group with uid/gid<1000 and doesn’t create any home directory.
Configure the permissions:
# chown -R nodejs:nodejs /opt/nodejs
Create the /etc/systemd/system/nodejs.service unit file and paste the following lines into:
[Unit] Description=My NodeJS Service After=syslog.target network.target [Service] EnvironmentFile=/etc/default/nodejs User=nodejs Group=nodejs WorkingDirectory=/opt/nodejs ExecStart=/bin/node main.js Restart=on-failure SuccessExitStatus=143 [Install] WantedBy=multi-user.target
Note1: According to this article, the NodeJS process when stopped exits with the code 143 when the default signal handler hasn’t been overriden (SuccessExitStatus=143). This is the “normal” behavior.
Note2: Remember that the code is in the /opt/nodejs directory (WorkingDirectory=/opt/nodejs) and start with the main.js script (ExecStart=/bin/node main.js).
Create the /etc/default/nodejs environment file and paste the following line into:
Note: Your NodeJS service certainly requires other environment variables. Write them into this same file.
Start and enable at boot the NodeJS service:
# systemctl start nodejs && systemctl enable nodejs
Add a rule to the firewall:
# firewall-cmd --permanent --add-service=http # firewall-cmd --reload
The Digital Ocean website offers a tutorial on How to install Node.js on a CentOS 7 server.
Andrew Voce provides a tutorial on How to protect a NodeJS service behind a Nginx reverse proxy for better security.
The Nginx website provides some tips to increase NodeJS application performances,
Cesar Valdez wrote an article about Profiling NodeJS applications with Linux Performance Tools.