Sails is a free, open-source, popular MVC framework for Node.js. It is built on Express and used for building scalable production-ready Node.js applications. It is very similar to the Ruby on Rails web framework used to quickly build REST APIs, single-page apps, and real-time apps. It has a powerful code generator that helps you to build your application with less coding.
This post will show you how to install Sails JS with Nginx on Arch Linux.
Prerequisites
- A fresh Arch Linux server
- A root password configured on your server
- An IPV6 IP address associated with your instance
Step 1 – Configure Repository
By default, the default repository is outdated in Arch Linux, so you will need to modify the default mirror list. You can do it by editing the mirror list configuration file:
nano /etc/pacman.d/mirrorlist
Remove all lines and add the following lines:
## Score: 0.7, United States Server = http://mirror.us.leaseweb.net/archlinux/$repo/os/$arch ## Score: 0.8, United States Server = http://lug.mtu.edu/archlinux/$repo/os/$arch Server = http://mirror.nl.leaseweb.net/archlinux/$repo/os/$arch ## Score: 0.9, United Kingdom Server = http://mirror.bytemark.co.uk/archlinux/$repo/os/$arch ## Score: 1.5, United Kingdom Server = http://mirrors.manchester.m247.com/arch-linux/$repo/os/$arch Server = http://archlinux.dcc.fc.up.pt/$repo/os/$arch ## Score: 6.6, United States Server = http://mirror.cs.pitt.edu/archlinux/$repo/os/$arch ## Score: 6.7, United States Server = http://mirrors.acm.wpi.edu/archlinux/$repo/os/$arch ## Score: 6.8, United States Server = http://ftp.osuosl.org/pub/archlinux/$repo/os/$arch ## Score: 7.1, India Server = http://mirror.cse.iitk.ac.in/archlinux/$repo/os/$arch ## Score: 10.1, United States Server = http://mirrors.xmission.com/archlinux/$repo/os/$arch
Save and close the file, then update all the package indexes with the following command:
pacman -Syu
Step 2 – Install Node JS and NPM
First, install NVM on your system with the following command.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
You will get the following output.
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm => Close and reopen your terminal to start using nvm or run the following to use it now:
Next, run the following command to activate the NVM environment variable.
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
Now, verify the NVM version using the following command.
nvm --version
Output.
0.39.2
Next, install the latest version of Node JS using the following command.
nvm install --lts
You will get the following output.
Installing latest LTS version. Downloading and installing node v18.14.2... Downloading https://nodejs.org/dist/v18.14.2/node-v18.14.2-linux-x64.tar.xz... ####################################################################################################################################### 100.0% Computing checksum with sha256sum Checksums matched! Now using node v18.14.2 (npm v9.5.0) Creating default alias: default -> lts/* (-> v18.14.2)
To verify the Node JS version, run the following command.
node --version
Output.
v18.14.2
Next, find the Node JS installation path using the following command.
which node
You will get the following output.
/root/.nvm/versions/node/v18.14.2/bin/node
Next, use the above path to create a symbolic link for Node JS.
ln -s /root/.nvm/versions/node/v18.14.2/bin/node /usr/bin/node
Step 3 – Install Sails JS
You can use the NPM to easily install the Sails JS on your server.
npm -g install sails
You will see the following output.
added 230 packages in 10s 6 packages are looking for funding run `npm fund` for details npm notice npm notice New patch version of npm available! 9.5.0 -> 9.5.1 npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.5.1 npm notice Run npm install -g [email protected] to update! npm notice
Step 4 – Create a Sails JS Application
First, create a directory to hold Sails JS with the following command.
mkdir sails
Next, navigate to the Sails directory and create a Sails app with the following command.
cd sails sails new app
You will be asked to select the template:
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 continue.
= info: Installing dependencies... Press CTRL+C to cancel. (to skip this step in the future, use --fast) info: Created a new Sails app `app`!
Next, change the directory to the app directory and start the Sails app with the following command.
cd app sails lift
You will see 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.4 |\ info: /|.\ info: / || \ info: ,' |' \ info: .-'.-==|/_--' info: `--'-------' info: __---___--___---___--___---___--___ info: ____---___--___---___--___---___--___-__ info: info: Server lifted in `/root/sails/app` info: To shut down Sails, press + C at any time. info: Read more at https://sailsjs.com/support. debug: ------------------------------------------------------- debug: :: Fri Feb 24 2023 10:13:10 GMT+0000 (Coordinated Universal Time) debug: Environment : development debug: Port : 1337 debug: -------------------------------------------------------
Press the CTRL+C to stop the application
Next, find the Sails installation path with the following command.
which sails
Output.
/root/.nvm/versions/node/v18.14.2/bin/sails
Use the above path to create a symbolic link of Sails binary.
ln -s /root/.nvm/versions/node/v18.14.2/bin/sails /usr/bin/sails
Step 5 – Create a Systemd Service File for Sails JS
Next, it is a good idea to create a systemd file to manage the Sails JS service.
nano /lib/systemd/system/sails.service
Add the following configurations.
[Unit] After=network.target [Service] Type=simple User=root WorkingDirectory=/root/sails/app 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
Next, start and enable the Sails service with the following command.
systemctl start sails systemctl enable sails
You can check the status of the Sails service with the following command.
systemctl status sails
You will get the following output.
● sails.service Loaded: loaded (/usr/lib/systemd/system/sails.service; disabled; preset: disabled) Active: active (running) since Fri 2023-02-24 10:15:30 UTC; 4s ago Main PID: 56668 (node) Tasks: 22 (limit: 4700) Memory: 174.2M CGroup: /system.slice/sails.service ├─56668 node /usr/bin/sails lift └─56677 grunt Feb 24 10:15:32 archlinux sails[56668]: info: ____---___--___---___--___---___--___-__ Feb 24 10:15:32 archlinux sails[56668]: info: Feb 24 10:15:32 archlinux sails[56668]: info: Server lifted in `/root/sails/app` Feb 24 10:15:32 archlinux sails[56668]: info: To shut down Sails, press + C at any time. Feb 24 10:15:32 archlinux sails[56668]: info: Read more at https://sailsjs.com/support. Feb 24 10:15:32 archlinux sails[56668]: debug: ------------------------------------------------------- Feb 24 10:15:32 archlinux sails[56668]: debug: :: Fri Feb 24 2023 10:15:32 GMT+0000 (Coordinated Universal Time) Feb 24 10:15:32 archlinux sails[56668]: debug: Environment : development Feb 24 10:15:32 archlinux sails[56668]: debug: Port : 1337 Feb 24 10:15:32 archlinux sails[56668]: debug: -------------------------------------------------------
Step 6 – Install Nginx for Sails JS
Next, you will need to install and configure Nginx as a reverse proxy for Sails JS. First, install the Nginx package using the following command.
pacman -S nginx-mainline
Next, start and enable the Nginx service with the following command.
systemctl start nginx systemctl enable nginx
Next, create a directory to store Nginx virtual host.
mkdir /etc/nginx/sites-enabled
Next, create an Nginx configuration file for Sails JS.
nano /etc/nginx/sites-enabled/sails.conf
Add the following configuration.
server { listen 80; server_name sails.example.com; location / { proxy_pass http://localhost:1337/; proxy_set_header Host $host; proxy_buffering off; } }
Save the file, then edit the Nginx main configuration file.
nano /etc/nginx/nginx.conf
Add the following lines after http{:
server_names_hash_bucket_size 64; include sites-enabled/*;
Save the file then verify the Nginx configuration.
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 the Nginx service to apply the changes.
systemctl restart nginx
Step 7 – Access Sails JS Web UI
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 registration page on the following screen.
Provide your name, email, password then click on the Create account button. You should see the Sails JS dashboard on the following screen.
Conclusion
In this tutorial, we explained how to install Sails JS on Arch Linux. We also explained how to configure Nginx as a reverse proxy for Sails JS. You can now start deploying your Sails JS app on the production environment. You can now install Sails JS on dedicated server hosting from Atlantic.Net!