Índice
- Acerca de WinSW
- Instalación
- Configuración
- Uso
- Servicios comunes
- Nginx
Acerca de WinSW
WinSW, conocido como Windows Service Wrapper, permite empaquetar aplicaciones para que se ejecuten como servicios en Windows. La versión 3 de WinSW requiere .NET Framework 4.6.1 o superior. Para sisteams sin .NET Framework, el proyecto ofrece binarios nativos de 64 bits y 32 bits basados en .NET 7.
- Repositorio oficial: https://github.com/winsw/winsw
- Descargas oficiales: https://github.com/winsw/winsw/releases
- Nota: descargue la versión más reciente (Latest)
- Archivos necesarios:
- Archivo de configuración: elija uno de los siguientes
- Configuración completa: sample-allOptions.xml
- Configuración mínima: sample-minimal.xml
- Archivo ejecutable: según la arquitectura del sistema (generalmente x64)
- WinSW-x64.exe
Instalación
- Un conjunto de WinSW (archivo XML + ejecutable) solo puede gestionar un servicio.
- Coloque el archivo de configuración y el ejecutable en el mismo directorio que el archivo JAR de la aplicación.
- Renombre ambos archivos para que coincidan con el nombre del archivo JAR (recomendado aunque no obligatorio).
- Edite el archivo XML con un editor de texto. A continuación se detallan las configuraciones clave.
Configuración
Todas las opciones deben estar dentro de las etiquetas
<service>y</service>. Los cambios surtirán efecto al reiniciar el servicio.
- Configuraciones principales:
- Identificador del servicio:
<id>Debe ser único dentro del sistema operativo. - Nombre visible del servicio:
<name>Muestra el nombre en el Administrador de servicios. - Descripción del servicio:
<description>Información adicional mostrada en el panel de servicios. - Aplicación ejecutable:
<executable>Ruta al comando que inicia la aplicación. Para Java, puede usarsejavasi está en el PATH. - Parámetros de inicio:
<arguments>Argumentos pasados al proceso, por ejemplo:-jar D:\app.jar - Modo de arranque:
<startmode>Puede serAutomatic(arranque automático) oManual. UseAutomaticsi depende de otros servicios como MySQL o Redis. - Registro de logs de WinSW:
<log mode="none"/>Evita que WinSW genere un archivo de log innecesario con salida de consola. - Ruta de logs de WinSW:
<logpath>Directorio donde se almacenarán los registros de WinSW. Si no se especifica, se guarda en el directorio actual. - Variables de entorno temporales:
<env name="var" value="valor"/>Permite definir variables locales durante la ejecución del servicio. - Dependencias de servicios:
<depend>Especifica otros servicios que deben estar activos antes de iniciar este. - Otras opciones disponibles: Consulte: https://github.com/winsw/winsw/blob/v3/docs/xml-config-file.md
- Más opciones de registro: Consulte: https://github.com/winsw/winsw/blob/v3/docs/logging-and-error-reporting.md
- Ejemplo de configuración:
<service>
<id>MyJavaApp</id>
<name>Servicio Java de Prueba</name>
<description>Aplicación Java desplegada como servicio</description>
<depend>MySQL</depend>
<env name="JAVA_HOME" value="D:\jdk-17"/>
<executable>%JAVA_HOME%\bin\java</executable>
<arguments>-XX:MetaspaceSize=1g -XX:MaxMetaspaceSize=2g -Xms2g -Xmx8g -Xmn1g -Xss1m -XX:SurvivorRatio=8 -Dfile.encoding=utf-8 -jar D:\app.jar</arguments>
<startmode>Automatic</startmode>
<log mode="none"/>
<logpath>D:\logs\app</logpath>
</service>
Uso
- Gestionar el servicio mediante el ejecutable con comandos específicos.
- Sintaxis:
nombre.exe <comando> - Comandos disponibles:
install: instala el serviciostart: inicia el serviciostop: detiene el serviciorestart: reinicia el serviciostatus: muestra el estado actualuninstall: elimina el servicio del sistema
- Para más detalles sobre comandos, consulte: https://github.com/winsw/winsw/blob/v3/docs/cli-commands.md
Servicios comunes
Nginx
<service>
<id>nginx</id>
<name>Nginx Server</name>
<description>Servidor web Nginx como servicio de Windows</description>
<executable>D:\nginx-1.22.1\nginx.exe</executable>
<logpath>D:\nginx-1.22.1\logs</logpath>
<log mode="none"/>
<startmode>Automatic</startmode>
<startarguments>-p D:\nginx-1.22.1\</startarguments>
<stopexecutable>D:\nginx-1.22.1\nginx.exe</stopexecutable>
<stoparguments>-p D:\nginx-1.22.1\ -s stop</stoparguments>
</service>