feat: Mejora generador de servicios systemd con soporte completo NVM
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)
This commit is contained in:
42
test_service_generation.sh
Normal file
42
test_service_generation.sh
Normal file
@@ -0,0 +1,42 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user