Mejora la generación de archivos .service para incluir automáticamente el PATH de NVM y NODE_ENV, siguiendo las mejores prácticas de systemd. PROBLEMA RESUELTO: - Servicios generados no incluían Environment=PATH con NVM - Faltaba NODE_ENV=production por defecto - Variables de entorno desordenadas - Sin logging de detección de NVM MEJORAS IMPLEMENTADAS: 1. Auto-detección de NVM en ejecutable: - Si el ejecutable contiene '/.nvm/', extrae el directorio bin - Agrega Environment=PATH=/path/to/.nvm/.../bin:... - Log: "Agregando PATH de NVM: /path/to/bin" 2. NODE_ENV por defecto: - Apps Node.js obtienen NODE_ENV=production automáticamente - Solo si el usuario no lo definió explícitamente - Previene errores de módulos dev en producción 3. Orden lógico de variables: - PATH primero (crítico para encontrar node/npm) - NODE_ENV segundo - Variables del usuario después - ExecStart después de todas las env vars 4. Construcción mejorada del servicio: - Usa StringBuilder para mejor control - Separa secciones lógicamente - Más fácil de leer y mantener SERVICIO GENERADO (ejemplo): [Unit] Description=App para gestionar Tareas After=network.target [Service] Type=simple User=user_apps WorkingDirectory=/home/user_apps/apps/app_tareas Environment=PATH=/home/user_apps/.nvm/versions/node/v24.12.0/bin:/usr/local/bin:/usr/bin:/bin Environment=NODE_ENV=production Environment="PORT=3000" ExecStart=/home/user_apps/.nvm/versions/node/v24.12.0/bin/npm start Restart=always RestartSec=10 SyslogIdentifier=siax-app-TAREAS [Install] WantedBy=multi-user.target COMANDOS SYSTEMD (ejecutados automáticamente por AppManager): ✅ sudo systemctl daemon-reload ✅ sudo systemctl enable siax-app-TAREAS.service ✅ sudo systemctl start siax-app-TAREAS.service BENEFICIOS: ✅ Servicios funcionan con NVM sin configuración manual ✅ PATH correcto para encontrar node/npm ✅ NODE_ENV=production mejora rendimiento y seguridad ✅ Logging claro cuando se detecta NVM ✅ Orden profesional de variables de entorno Archivos modificados: - src/systemd/service_generator.rs: +50/-20 líneas - test_service_generation.sh: nuevo (ejemplo de uso)
43 lines
1.1 KiB
Bash
43 lines
1.1 KiB
Bash
#!/bin/bash
|
|
|
|
# Script de prueba para verificar la generación de servicios con NVM
|
|
|
|
echo "=== Test: Generación de servicio con NVM ==="
|
|
echo ""
|
|
|
|
# Simular generación de servicio
|
|
cat << 'EOF'
|
|
SERVICIO GENERADO (simulado):
|
|
|
|
[Unit]
|
|
Description=App para gestionar Tareas
|
|
After=network.target
|
|
|
|
[Service]
|
|
Type=simple
|
|
User=user_apps
|
|
WorkingDirectory=/home/user_apps/apps/app_tareas
|
|
Environment=PATH=/home/user_apps/.nvm/versions/node/v24.12.0/bin:/usr/local/bin:/usr/bin:/bin
|
|
Environment=NODE_ENV=production
|
|
ExecStart=/home/user_apps/.nvm/versions/node/v24.12.0/bin/npm start
|
|
|
|
Restart=always
|
|
RestartSec=10
|
|
SyslogIdentifier=siax-app-TAREAS
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
|
|
CARACTERÍSTICAS:
|
|
✅ Environment=PATH incluye directorio NVM automáticamente
|
|
✅ Environment=NODE_ENV=production por defecto
|
|
✅ SyslogIdentifier para logs claros
|
|
✅ Orden lógico: PATH primero, luego env vars del usuario
|
|
|
|
COMANDOS PARA APLICAR (ejecutados por AppManager automáticamente):
|
|
sudo systemctl daemon-reload
|
|
sudo systemctl enable siax-app-TAREAS.service
|
|
sudo systemctl start siax-app-TAREAS.service
|
|
|
|
EOF
|