RHEL7: How to install a NodeJS service.

Share this link


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

Additional Resources

The Digital Ocean website offers a tutorial on How to install Node.js on a CentOS 7 server.
The Nginx website provides some tips to increase NodeJS application performances,
Cesar Valdez wrote an article about Profiling NodeJS applications with Linux Performance Tools.

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 4.00 out of 5)

RHCSA7: Task of the day

Allowed time: 10 minutes.
Boot and change the root password before the end of the boot process.

RHCE7: Task of the day

Allowed time: 10 minutes.
Change the SSH process configuration to only listen on the 443 port.

Follow me on Twitter

Poll for favorite RHEL 7 book

What is your favorite RHEL 7 book to prepare RHCSA & RHCE exams?

View Results

Loading ... Loading ...

Poll for most difficult RHCSA 7 topic

What do you think is the most difficult RHCSA 7 topic?

View Results

Loading ... Loading ...

Poll for most difficult RHCE 7 topic

What do you think is the most difficult RHCE 7 topic?

View Results

Loading ... Loading ...