Cómo instalar el Framework Sails.js en Ubuntu 22.04

Sails es un framework MVC en tiempo real para crear aplicaciones empresariales Node.js listas para producción. Es una herramienta excelente para ayudarte a crear rápidamente prototipos de sitios web. Está construido sobre Node JS y Express JS, por lo que todo lo aplicable en NodeJS y Express funcionará con Sails JS. Admite WebSockets escalables, arquitectura orientada a servicios y múltiples almacenes de datos en el mismo proyecto, y proporciona seguridad básica y control de acceso basado en roles.

Este post te mostrará cómo instalar Sails.js con Apache como proxy inverso en Ubuntu 22.04.

Requisitos previos

  • Un servidor que ejecute Ubuntu 22.04.
  • Una contraseña de root configurada en el servidor.

Cómo empezar

Antes de empezar, se recomienda actualizar tus paquetes a la última versión. Puedes actualizarlos todos ejecutando el siguiente comando:

apt update -y
apt upgrade -y

Una vez actualizados todos los paquetes, instala otras dependencias necesarias mediante el siguiente comando:

apt-get install curl wget gnupg2 -y

Una vez que hayas terminado, puedes pasar al siguiente paso.

Instalar Node.js

A continuación, tendrás que instalar Node.js y NPM para crear una aplicación Sails.js. En primer lugar, añade el repositorio de Node.js utilizando el siguiente comando:

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

Una vez añadido el repositorio, instala el paquete Node.js con el siguiente comando:

apt-get install nodejs -y

Tras la instalación, puedes verificar la versión de Node.js utilizando el siguiente comando:

node --version

Obtendrás la versión de Node.js en la siguiente salida:

v16.17.1

Instalar Sails.js

A continuación, tendrás que instalar Sails.js en tu servidor. Puedes instalar Sails utilizando el Gestor de Paquetes de Node.

npm -g install sails

Una vez instalado Sails, puedes verificarlo con el siguiente comando:

sails --version

Obtendrás la versión de Sails en la siguiente salida:

1.5.3

Crear una Aplicación Sails.js

Después de instalar Sails, vamos a crear una aplicación Sails sencilla utilizando el siguiente comando:

sails new sails-app

Deberías obtener la siguiente salida:

 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
 info: Installing dependencies...
Press CTRL+C to cancel.
(to skip this step in the future, use --fast)
 info: Created a new Sails app `sails-app`!

Puedes verificar todos los archivos creados por Sails utilizando el siguiente comando:

ls sails-app

Deberías ver la siguiente salida:

api  app.js  assets  config  Gruntfile.js  node_modules  package.json  package-lock.json  README.md  tasks  views

A continuación, cambia el directorio a tu aplicación Sails e inicia la aplicación con el siguiente comando:

cd sails-app
sails lift

Deberías ver la siguiente salida:

 info: Starting app...

 info: 
 info:                .-..-.
 info: 
 info:    Sails              <|    .-..-.
 info:    v1.5.3              |\
 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: :: Sun Sep 25 2022 05:43:59 GMT+0000 (Coordinated Universal Time)

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

Pulsa CTRL+C para detener la aplicación. Crearemos un archivo de servicio systemd para iniciar y gestionar la aplicación Sails.

Crear un Archivo de Servicio Systemd para Sails.js

A continuación, tendrás que crear un archivo de servicio systemd para gestionar la aplicación Sails.js. Puedes crearlo con el siguiente comando:

nano /etc/systemd/system/sails-app.service

Añade las siguientes líneas:

[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

Guarda y cierra el archivo, luego recarga el demonio systemd para aplicar los cambios:

systemctl daemon-reload

A continuación, inicia el servicio Sails.js y habilítalo para que se inicie al reiniciar el sistema:

systemctl start sails-app
systemctl enable sails-app

Ahora puedes comprobar el estado de la aplicación Sails con el siguiente comando:

systemctl status sails-app

Deberías obtener la siguiente salida:

? sails-app.service
     Loaded: loaded (/etc/systemd/system/sails-app.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-09-25 05:44:42 UTC; 6s ago
   Main PID: 2896 (node)
      Tasks: 22 (limit: 4579)
     Memory: 159.2M
        CPU: 3.676s
     CGroup: /system.slice/sails-app.service
             ??2896 node /usr/bin/sails lift
             ??2903 grunt "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ">

Sep 25 05:44:44 ubuntu2204 sails[2896]:  info:  ____---___--___---___--___---___--___-__
Sep 25 05:44:44 ubuntu2204 sails[2896]:  info:
Sep 25 05:44:44 ubuntu2204 sails[2896]:  info: Server lifted in `/root/sails-app`
Sep 25 05:44:44 ubuntu2204 sails[2896]:  info: To shut down Sails, press  + C at any time.
Sep 25 05:44:44 ubuntu2204 sails[2896]:  info: Read more at https://sailsjs.com/support.
Sep 25 05:44:44 ubuntu2204 sails[2896]: debug: -------------------------------------------------------
Sep 25 05:44:44 ubuntu2204 sails[2896]: debug: :: Sun Sep 25 2022 05:44:44 GMT+0000 (Coordinated Universal Time)
Sep 25 05:44:44 ubuntu2204 sails[2896]: debug: Environment : development
Sep 25 05:44:44 ubuntu2204 sails[2896]: debug: Port        : 1337
Sep 25 05:44:44 ubuntu2204 sails[2896]: debug: -------------------------------------------------------

En este punto, la aplicación Sails está iniciada y escucha en el puerto 1337. Ya puedes pasar al siguiente paso.

Configurar Apache como proxy inverso para Sails.js

Configurar Apache como proxy inverso para acceder a la aplicación Sails es una buena idea. Primero, instala el servidor Apache con el siguiente comando:

apt install apache2 -y

Una vez instalado el paquete Apache, crea un archivo de configuración del host virtual de Apache con el siguiente comando:

nano /etc/apache2/sites-available/sails.conf

Añade las siguientes líneas:

<VirtualHost *:80>
    ServerName sailsapp.example.com

    ServerAdmin [email protected]
    DocumentRoot /root/sails-app

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <LocationMatch  "^/(?!js|css|media)" >
            ProxyPass   http://127.0.0.1:1337
            ProxyPassReverse   http://127.0.0.1:1337
    </LocationMatch>

    <Location "/dist/">
            ProxyPass !
    </Location>

    RewriteEngine On
    RewriteCond %{REQUEST_URI}  ^/socket.io            [NC]
    RewriteCond %{QUERY_STRING} transport=websocket    [NC]
    RewriteRule /(.*)           ws://localhost:1337/$1 [P,L]
</VirtualHost>

Guarda y cierra el archivo y, a continuación, activa el host virtual Sails con el siguiente comando:

a2ensite sails.conf

A continuación, activa otros módulos de Apache con el siguiente comando:

a2enmod headers proxy_http xml2enc proxy ssl proxy_wstunnel rewrite proxy_ajp deflate proxy_balancer proxy_connect proxy_html

A continuación, reinicia el servicio Apache para aplicar los cambios:

systemctl restart apache2

Ahora puedes verificar el estado del servicio Apache con el siguiente comando:

systemctl status apache2

Deberías obtener la siguiente salida:

? apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-09-25 05:46:54 UTC; 2s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 3986 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 3990 (apache2)
      Tasks: 55 (limit: 4579)
     Memory: 6.8M
        CPU: 90ms
     CGroup: /system.slice/apache2.service
             ??3990 /usr/sbin/apache2 -k start
             ??3991 /usr/sbin/apache2 -k start
             ??3992 /usr/sbin/apache2 -k start

Sep 25 05:46:54 ubuntu2204 systemd[1]: Starting The Apache HTTP Server...

Actualmente, el servidor web Apache está instalado y configurado como proxy inverso para la aplicación Sails.js. Ya puedes pasar al siguiente paso.

Accede a la interfaz web de Sails.js

Ya puedes abrir tu navegador web y acceder a la interfaz web de Sails.js utilizando la URL http://sailsapp.example.com. Deberías ver la interfaz web de Sails.js en la siguiente pantalla:

Conclusión

¡Enhorabuena! Has instalado con éxito Sails.js con Apache como proxy inverso en Ubuntu 22.04. Ahora puedes alojar una aplicación web escalable y lista para producción utilizando el framework Sails.js. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...