2 minute read


Node.js® is a JavaScript runtime built on Chrome’s V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient. Node.js‘ package ecosystem, npm, is the largest ecosystem of open source libraries in the world (source NodeJS website).

Installation Procedure

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. Also, there is no unit file after the installation, you only get the node engine binary (/usr/bin/node) and the npm JavaScript tool (/usr/bin/npm) used to install additional JavaScript libraries. To get a real service, you will need to put together the node engine, your Javascript code and a unit file.

Configuration Procedure

In this tutorial, it will be assumed that the JavaScript code is located in the /opt/nodejs directory and start with the main.js script.

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:

Description=My NodeJS Service
After=syslog.target network.target

ExecStart=/bin/node main.js


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 themain.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

Additional Resources

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.

Leave a comment