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)
1.1 KiB
1.1 KiB