💎 Despliegue de Aplicación Ruby con Apache en SaveinCloud
⚠️ Todas las configuraciones mostradas en este manual son ejemplos simples e hipotéticos. Puede ser necesario realizar adaptaciones según la topología de su entorno.
Esta guía muestra cómo realizar el despliegue de una aplicación Ruby utilizando Apache + Passenger dentro de la plataforma SaveinCloud.
✅ Requisitos recomendados
Antes de iniciar el despliegue, asegúrese de que el proyecto contenga:
-
Código fuente Ruby listo para ejecución (ejemplo: aplicación Sinatra o Rails);
-
Un archivo
config.ruválido para Rack; -
Un
Gemfilecon las dependencias listadas (ejemplo:sinatra,rack,passenger); -
Estructura de directorios bien organizada;
-
Archivo
.htaccesscon la configuración del Passenger.
Parte 1 - Configurando la Topología con Apache Ruby
🔧 Paso 1 – Montaje de la Topología
Agregue a la capa de aplicación el servicio Apache.
Ejemplo de una topología de Apache Ruby:

Load Balancer (opcional) → Apache → Aplicação Ruby
💡 Si desea utilizar HTTPS, configure directamente en Apache el addon de Let's Encrypt o utilice un Load Balancer con SSL.
Ajuste los cloudlets reservados según la necesidad de la aplicación.
Parte 2 - Realizando despliegue de la aplicación
📁 Despliegue vía Upload ZIP
- Acceda a la pestaña de Implementar Archivo en Apache.

- Realice el upload del archivo
.zipque contiene su aplicación Ruby.

✅ El contenido será extraído automáticamente al contexto seleccionado en el momento del despliegue, Ej:
/var/www/webroot/ROOT
Parte 3 - Configuración de Entorno Ruby (Passenger)
📑 Personalización de .htaccess
Para que Passenger reconozca su aplicación Ruby, cree un archivo .htaccess dentro de la raíz de la aplicación.
ℹ️ Ajuste las rutas según sea necesario.
📑 Instalación de Gems
Después del upload del proyecto, acceda al entorno vía SSH e instale las dependencias Ruby:
✅ Asegúrese de que el
Gemfilecontenga todas las dependencias obligatorias.
🛠️ Solución de Problemas
❌ Passenger - Could not spawn process for application
Causa: Falta de gems o error de sintaxis en el código.
Solución:
Verifique el log de errores de Apache:
/var/log/httpd/error_log
❌ Error de sintaxis en config.ru
Causa: Configuración incorrecta en el archivo config.ru.
Solución:
Verifique que el archivo contenga un require correcto y una instancia de aplicación Rack válida.
❌ Incomplete response received from application
Causa: La aplicación Ruby no devolvió una respuesta HTTP válida.
Solución:
Revise el código Ruby, principalmente el app.rb y el config.ru. Pruebe localmente con rackup antes de hacer el despliegue.
❌ Error 500 - Internal Server Error
Causa: Problemas de permisos, gems faltantes o fallo de inicialización de Passenger.
Solución:
Revise los logs de Apache y Passenger:
/var/log/httpd/error_log