HowtoForge

Install Sails.js Framework with Nginx on CentOS 8

Sails.js is a Javascript framework for Node.js. It is used for developing real-time applications very quickly. It allows you to resemble the MVC architecture from frameworks like Ruby on Rails. It comes with blueprints that help jumpstart your app's backend without writing any code. It is compatible with other front-end including, Angular, React, iOS, Android, Windows Phone, custom hardware, or something else entirely.

In this post, we will show you how to install Sails.js with Nginx on CentOS 8

Prerequisites

Install Node.js

First, install all the required dependencies using the following command:

dnf install curl gcc-c++ make -y

Once all the dependencies are installed, add the Node source repository with the following command:

curl -sL https://rpm.nodesource.com/setup_16.x | bash -

After adding the Node source repository, install the Node.js with the following command:

dnf install nodejs -y

Once the installation is completed, verify the Node.js version with the following command:

node --version

You should get the following output:

v16.4.0

Install Sails.js

You can install the Sails.js using the NPM command as shown below:

npm -g install sails

Next, create your project using Sails.js with the following command:

sails new myproject

You will be asked to choose a 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)
? 2

Type 2 and hit Enter to install the application. You should get the following output:

 info: Installing dependencies...
Press CTRL+C to cancel.
(to skip this step in the future, use --fast)

 info: Created a new Sails app `myproject`!

Start the Sails.js Application

Next, change the directory to myproject and start your application with the following command:

cd myproject
sails lift

You should get the following output:

 info: Starting app...

 info: 
 info:                .-..-.
 info: 
 info:    Sails              <|    .-..-.
 info:    v1.4.3              |\
 info:                       /|.\
 info:                      / || \
 info:                    ,'  |'  \
 info:                 .-'.-==|/_--'
 info:                 `--'-------' 
 info:    __---___--___---___--___---___--___
 info:  ____---___--___---___--___---___--___-__
 info: 
 info: Server lifted in `/root/myproject`
 info: To shut down Sails, press  + C at any time.
 info: Read more at https://sailsjs.com/support.

debug: -------------------------------------------------------
debug: :: Thu Jun 24 2021 04:46:13 GMT-0400 (Eastern Daylight Time)

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

Press CTRL + C to stop the application.

Create a Systemd Service File for Sails.js

Next, you will need to create a systemd service file to manage your application.

You can create it with the following command:

nano /lib/systemd/system/sails.service

Add the following lines:

[Unit]
After=network.target

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

[Install]
WantedBy=multi-user.target

Save and close the file then reload the systemd daemon with the following command:

systemctl daemon-reload

Next, start the Sails service and enable it to start at system reboot:

systemctl start sails
systemctl enable sails

You can check the status of the Sails with the following command:

systemctl status sails

You should get the following output:

? sails.service
   Loaded: loaded (/usr/lib/systemd/system/sails.service; disabled; vendor preset: disabled)
   Active: active (running) since Thu 2021-06-24 04:47:07 EDT; 5s ago
 Main PID: 47388 (node)
    Tasks: 22 (limit: 25014)
   Memory: 148.1M
   CGroup: /system.slice/sails.service
           ??47388 node /usr/bin/sails lift
           ??47395 grunt

Jun 24 04:47:09 centos8 sails[47388]:  info:  ____---___--___---___--___---___--___-__
Jun 24 04:47:09 centos8 sails[47388]:  info:
Jun 24 04:47:09 centos8 sails[47388]:  info: Server lifted in `/root/myproject`
Jun 24 04:47:09 centos8 sails[47388]:  info: To shut down Sails, press  + C at any time.
Jun 24 04:47:09 centos8 sails[47388]:  info: Read more at https://sailsjs.com/support.
Jun 24 04:47:09 centos8 sails[47388]: debug: -------------------------------------------------------
Jun 24 04:47:09 centos8 sails[47388]: debug: :: Thu Jun 24 2021 04:47:09 GMT-0400 (Eastern Daylight Time)
Jun 24 04:47:09 centos8 sails[47388]: debug: Environment : development
Jun 24 04:47:09 centos8 sails[47388]: debug: Port        : 1337
Jun 24 04:47:09 centos8 sails[47388]: debug: -------------------------------------------------------

At this point, Sails is started and listening on port 1337.

Configure Nginx as a Reverse Proxy for Sails Application

It is recommended to install and configure Nginx as a reverse proxy to your Sails application.

First, install the Nginx package with the following command:

dnf install nginx -y

After installing Nginx, create an Nginx virtual host configuration file for Sails:

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

Add the following lines:

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

Save and close the file when you are finished.

Next, verify the Nginx for any configuration error with the following command:

nginx -t

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

Next, start the Nginx service and enable it to start at system reboot:

systemctl start nginx
systemctl enable nginx

Now, check the status of the Nginx service with the following command:

systemctl status nginx

Configure Firewall

Next, you will need to allow port 80 through the firewall. You can allow it with the following command:

firewall-cmd --permanent --zone=public --add-port=80/tcp

Next, reload the firewall to apply the changes:

firewall-cmd --reload

Once you are finished, you can proceed to the next step.

Access Sails.js Web Interface

Now, open your web browser and access the Sails.js web interface using the URL http://salis.domain.com. You should see the Sails.js default page on the following screen:

Conclusion

Congratulations! you have successfully installed Sails.js with Nginx as a reverse proxy on CentOS 8. You can now start developing real-time applications with Sails.

Install Sails.js Framework with Nginx on CentOS 8