Sails.js is a free, open-source, real-time MVC Framework developed on top of the Node.js environment. It makes it easy to build custom and enterprise-grade Node.js applications. Sails.js uses code generators to build an application with less manual writing of code. You can develop chat applications, real-time dashboards, and multiplayer games using the Salis.js framework.

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

Step 1 – Install Node.js

Before starting, you will need to install Node.js to your system. First, install all required dependencies using the following command:

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

Next, add the Node source repo using the following command:

curl --silent --location https://rpm.nodesource.com/setup_18.x | bash -

Next, install 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:

v18.19.0

Step 2 – Install Sails.js

Now, you can use NPM to install Sails.js:

npm -g install sails

After installing Sails.js, you will need to create a directory for the Sails.js application.

mkdir sails

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

cd sails
sails new myapp

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 `myapp`!

Step 3 – Start Sails.js Application

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

cd myapp
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.0              |\
 info:                       /|.\
 info:                      / || \
 info:                    ,'  |'  \
 info:                 .-'.-==|/_--'
 info:                 `--'-------' 
 info:    __---___--___---___--___---___--___
 info:  ____---___--___---___--___---___--___-__
 info: 
 info: Server lifted in `/root/sails/myapp`
 info: To shut down Sails, press  + C at any time.
 info: Read more at https://sailsjs.com/support.

debug: -------------------------------------------------------
debug: :: Mon Nov 08 2021 09:20:32 GMT+0000 (Coordinated Universal 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/myapp
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 Mon 2021-11-08 09:22:14 UTC; 7s ago
 Main PID: 48672 (node)
    Tasks: 22 (limit: 11411)
   Memory: 136.0M
   CGroup: /system.slice/sails.service
           ├─48672 node /usr/bin/sails lift
           └─48679 grunt

Nov 08 09:22:16 rockylinux sails[48672]:  info:  ____---___--___---___--___---___--___-__
Nov 08 09:22:16 rockylinux sails[48672]:  info:
Nov 08 09:22:16 rockylinux sails[48672]:  info: Server lifted in `/root/sails/myapp`
Nov 08 09:22:16 rockylinux sails[48672]:  info: To shut down Sails, press  + C at any time.
Nov 08 09:22:16 rockylinux sails[48672]:  info: Read more at https://sailsjs.com/support.
Nov 08 09:22:16 rockylinux sails[48672]: debug: -------------------------------------------------------
Nov 08 09:22:16 rockylinux sails[48672]: debug: :: Mon Nov 08 2021 09:22:16 GMT+0000 (Coordinated Universal Time)
Nov 08 09:22:16 rockylinux sails[48672]: debug: Environment : development
Nov 08 09:22:16 rockylinux sails[48672]: debug: Port        : 1337
Nov 08 09:22:16 rockylinux sails[48672]: 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=48672,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 verify Nginx for any syntax error:

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:
Sails.js dashboard page

Conclusion

Congratulations! You have successfully installed Sails.js with Nginx on Rocky Linux 8. You can now start developing your first real-time application using the Sails.js framework. Try it out on your virtual private server from Atlantic.Net!