Sails.js is a popular, free, open-source MVC framework for Node.js. It is simple and easy to use and was developed on top of the Node.js environment. It provides developers an easier way to build custom and enterprise-grade Node.js applications. Sails.js offers a code generator that helps developers to build an application with less writing of code. With Sails.js, you can develop chat, real-time dashboards, and multiplayer games.

In this post, we will show you how to install the Salis.js framework with Nginx on Oracle Linux 8.

Step 1- Install Node.js on Oracle Linux 8

First, you will need to install Node.js on your system. To do so, first install all required dependencies using the following command:

dnf update -y
dnf install curl gcc-c++ make -y

Next, list all available Node.js versions using the following command.

dnf module list --all nodejs

You will see the following output.

Name      Stream    Profiles                                Summary             
nodejs    10 [d]    common [d], development, minimal, s2i   Javascript runtime  
nodejs    12        common [d], development, minimal, s2i   Javascript runtime  
nodejs    14        common [d], development, minimal, s2i   Javascript runtime  
nodejs    16        common [d], development, minimal, s2i   Javascript runtime  
nodejs    18        common [d], development, minimal, s2i   Javascript runtime  
nodejs    20        common, development, minimal, s2i       Javascript runtime

Next, enable the Node.js version 20 repo using the following command.

dnf module enable nodejs:20

Next, install the Node.js by running the following command:

dnf install nodejs -y

Once Node.js is installed, you can verify the Node.js version using the following command:

node --version

You will get the following output:

v20.0.0

Step 2 – Install Sails.js on Oracle Linux 8

You can use the NPM to install Sails.js easily on your system. Let’s run the following command to install Sail.js using the NPM command:

npm -g install sails

After the Sails.js installation, create a directory for the Sails.js application.

mkdir sails

Next, change the directory to the sails and create a new application using the following command:

cd sails
sails new newapp

You will be asked to select the template for your application:

 Choose a template for your new Sails app:
 1. Web App  ·  Extensible project with auth, login, & password recovery
 2. Empty    ·  An empty Sails app, yours to configure
 (type "?" for help, or <CTRL+C> to cancel)
? 1

Type 1 and press the Enter key to create your application:

 info: Installing dependencies...
Press CTRL+C to cancel.
(to skip this step in the future, use --fast)
 info: Created a new Sails app `newapp`!

Step 3 – Start Sails.js Application

After creating a Sails.js application, change the directory to your application and start the application using the command below:

cd newapp
sails lift

You will get the following output:

 info: Starting app...

 info: Initializing project hook... (`api/hooks/custom/`)
 info: Initializing `apianalytics` hook...  (requests to monitored routes will be logged!)
 info: ·• Auto-migrating...  (alter)
 info:    Hold tight, this could take a moment.
 info:  ✓ Auto-migration complete.

debug: Running v0 bootstrap script...  (looks like this is the first time the bootstrap has run on this computer)
 info: 
 info:                .-..-.
 info: 
 info:    Sails              <|    .-..-.
 info:    v1.5.2              |\
 info:                       /|.\
 info:                      / || \
 info:                    ,'  |'  \
 info:                 .-'.-==|/_--'
 info:                 `--'-------' 
 info:    __---___--___---___--___---___--___
 info:  ____---___--___---___--___---___--___-__
 info: 
 info: Server lifted in `/root/sails/newapp`
 info: To shut down Sails, press  + C at any time.
 info: Read more at https://sailsjs.com/support.

debug: -------------------------------------------------------
debug: :: Tue Jun 28 2022 11:52:10 GMT-0400 (Eastern Daylight Time)


debug: Environment : development
debug: Port        : 1337
debug: -------------------------------------------------------

Press CTRL+C to stop the application.

Step 4 – Create a Systemd Service File for Salis.js

It is a good idea to create a systemd service file to manage the Sails.js application. You can create it using the following command:

nano /lib/systemd/system/sails.service

Add the following lines:

[Unit]
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/root/sails/newapp
ExecStart=/usr/bin/sails lift
Restart=on-failure

[Install]
WantedBy=multi-user.target

Save and close the file, then reload the systemd daemon to apply the changes:

systemctl daemon-reload

Now, start the Sails.js service and enable it to start at system reboot:

systemctl start sails
systemctl enable sails

You can also verify the status of the Sails.js service using the following command:

systemctl status sails

You will get the following output:

● sails.service
   Loaded: loaded (/usr/lib/systemd/system/sails.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2022-06-28 11:53:20 EDT; 6s ago
 Main PID: 18809 (node)
    Tasks: 22 (limit: 11409)
   Memory: 147.9M
   CGroup: /system.slice/sails.service
           ├─18809 node /usr/bin/sails lift
           └─18816 grunt

Jun 28 11:53:24 oraclelinux8 sails[18809]:  info:  ____---___--___---___--___---___--___-__
Jun 28 11:53:24 oraclelinux8 sails[18809]:  info:
Jun 28 11:53:24 oraclelinux8 sails[18809]:  info: Server lifted in `/root/sails/newapp`
Jun 28 11:53:24 oraclelinux8 sails[18809]:  info: To shut down Sails, press  + C at any time.
Jun 28 11:53:24 oraclelinux8 sails[18809]:  info: Read more at https://sailsjs.com/support.
Jun 28 11:53:24 oraclelinux8 sails[18809]: debug: -------------------------------------------------------
Jun 28 11:53:24 oraclelinux8 sails[18809]: debug: :: Tue Jun 28 2022 11:53:24 GMT-0400 (Eastern Daylight Time)
Jun 28 11:53:24 oraclelinux8 sails[18809]: debug: Environment : development
Jun 28 11:53:24 oraclelinux8 sails[18809]: debug: Port        : 1337
Jun 28 11:53:24 oraclelinux8 sails[18809]: debug: -------------------------------------------------------

At this point, the Sails.js application is started and listens on port 1337. You can check it using the following command:

ss -antpl | grep 1337

You will get the following output:

LISTEN 0      128                *:1337            *:*    users:(("node",pid=18809,fd=19))  

Step 5 – Configure Nginx as a Reverse Proxy for Sails.js

First, install Nginx with the following command:

dnf install nginx

Next, create an Nginx virtual host configuration file using the following command:

nano /etc/nginx/conf.d/sails.conf

Add the following lines:

server {
 listen       80;
 server_name  sails.example.com;
   location / {
     proxy_pass        http://localhost:1337/;
     proxy_set_header  Host $host;
     proxy_buffering   off;
   }
 }

Save and close the file, then edit the Nginx main configuration file:

nano /etc/nginx/nginx.conf

Define the max hash bucket size:

server_names_hash_bucket_size 64;

Next, verify Nginx for syntax errors:

nginx -t

You will get the following output:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Finally, restart Nginx to apply the changes:

systemctl restart nginx

Step 6 – Access Sails.js

Now, open your web browser and access the Sails.js web interface using the URL http://sails.example.com. You should see the Sails.js application on the following screen:
Sail.js dashboard

Conclusion

In this post, we explained how to install Sails.js with Nginx on Oracle Linux 8. You can now start developing your first real-time application using the Sails.js framework. Try it on dedicated hosting from Atlantic.Net!