Usar linger con Ruby on Rails

Generalidades

Este artículo explica cómo ejecutar Puma con Ruby on Rails utilizando Linger. Esta combinación permite que tu aplicación ejecute procesos persistentes y que tus servicios se reinicien si tu aplicación se cae o el servidor se reinicia.

Requisitos previos

Este artículo asume que has completado los siguientes pasos:

Paso 1 — Instalar Ruby y Rails

Instalar Ruby y Rails usando las siguientes guias.

Ruby

Instala una nueva versión de Ruby en tu VPS. Revisa el siguiente artículo para obtener más información:

Rails

El siguiente artículo utiliza el nombre de la aplicación Rails blog, pero puedes nombrarla como quieras.

Mira los pasos #1-7.3 en la siguiente guía para configurar Rails:

Paso 2 — Instalar Puma

Revisa las siguientes guías para ver los pasos sobre la instalación de Puma:

Editar el archivo puma.rb

Navega al siguiente directorio:

/home/username/example.com/blog/config

Edita el archivo puma.rb para cambiar el número de puerto predeterminado al puerto que elegiste al crear el Servidor Proxy en el panel. Este ejemplo utiliza el puerto 8003:

port ENV.fetch("PORT") {8003}

Inicia el servidor web de Puma

Navega al siguiente directorio:

/home/username/example.com/blog/

Corre el siguiente comando:

[server]$ bin/rails server

Para parar el servidor, presiona CTRL + C.

Solucionar un error

Si obtienes un error de host bloqueado acerca de tu dominio de aplicación, necesitarás agregar una línea al archivo development.rb.

Navega al siguiente directorio:

/home/username/example.com/blog/config/environments/

Edita el archivo development.rb. Debajo de la línea config.enable_reloading = true, agrega lo siguiente:

config.hosts << /example\.com/

Reinicia tu VPS e inicia Puma de nuevo. El error ya deberá estar resuelto.

Paso 3 — Instalar Linger

Para instalar linger bajo tu usuario, inicia sesión en tu servidor a través de SSH y corre el siguiente comando:

[server]$ loginctl enable-linger

Este comando no responderá con ninguna salida.

Paso 4 — Configurar Puma para las unidades de los usuarios Systemd

Revisa la guía oficial para más detalles:

Para configurar Puma para unidades de usuarios Systemd:

  1. Crea un archivo llamado puma.service en el directorio .config/systemd/user:
    [server]$ nano ~/.config/systemd/user/puma.service
  2. Agrega el siguiente código a este archivo:
    [Unit]
    Description=Puma instance to serve application
    After=network.target
    
    [Service]
    WorkingDirectory=/path/to/your/app
    ExecStart=/path/to/your/app/bin/puma -C config/puma.rb -e production
    ExecReload=/bin/kill -s HUP $MAINPID
    KillMode=mixed
    TimeoutStopSec=5
    PrivateTmp=true
    Restart=on-failure
    
    [Install]
    WantedBy=default.target
  3. Edita las líneas resaltadas de arriba como se aparece a continuación:
    • WorkingDirectory: La ruta a la aplicación de tu sitio web.
    • ExecStart: La tura a tu instalación de Puma.
  4. Habilita la unidad de usuario para puma:
    [server]$ systemctl --user enable puma
  5. Inicia la unidad con puma:
    [server]$ systemctl --user start puma
  6. Confirma que está corriendo:
    [server]$ systemctl --user status puma

Los servicios de tu aplicación ahora se reiniciarán automáticamente cuando el servidor se reinicie o si la aplicación se cae.

Ver también

¿Este artículo ha respondido sus preguntas?

Última actualización el PST.

¿Aún no encuentra lo que busca?