Control en Tiempo de Ejecución#

Para iniciar Angie, utilice systemd con el siguiente comando:

$ sudo service angie start

Se recomienda comprobar antes la sintaxis de la configuración. He aquí cómo hacerlo:

$ sudo angie -t && sudo service angie start

Para recargar la configuración:

$ sudo angie -t && sudo service angie reload

Para detener Angie:

$ sudo service angie stop

Después de la instalación, ejecute el siguiente comando para asegurarse de que Angie está en funcionamiento:

$ curl localhost:80

Nota

Los métodos para ejecutar la versión de código abierto de Angie pueden variar en función del método de instalación.

Angie tiene un proceso maestro y varios procesos de trabajo. El proceso maestro se encarga de leer y evaluar la configuración y de mantener los procesos de trabajo. Los procesos de trabajo gestionan el procesamiento real de las peticiones. Angie utiliza un modelo basado en eventos y mecanismos dependientes del sistema operativo para distribuir eficazmente las peticiones entre los procesos de trabajo. El número de procesos de trabajo se define en el archivo de configuración y puede ser fijo para una configuración dada o ajustarse automáticamente en función del número de núcleos de CPU disponibles (consulte worker_processes).

Cuando está configurado, Angie también vaciará ciertas zonas de memoria compartida (actualmente, keys_zone en proxy_cache_path) al disco antes de salir, de modo que un nuevo proceso maestro pueda restaurarlas con un rendimiento mejorado. Si la restauración falla debido a un cambio en el tamaño de la zona, incompatibilidad binaria u otras razones, Angie registrará una alerta (failed to restore zone at address) y no utilizará el mecanismo de restauración de zonas.

Uso de Señales#

Angie también puede controlarse mediante señales. Por defecto, el ID de proceso del proceso maestro se escribe en el archivo /run/angie.pid. Este nombre de archivo puede cambiarse en tiempo de configuración o en angie.conf mediante la directiva pid. El proceso maestro admite las siguientes señales:

TERM, INT

Apagado rápido

QUIT

Apagado elegante

HUP

Recargar configuración, actualizar zona horaria (solo para FreeBSD y Linux), iniciar nuevos procesos de trabajo con la configuración actualizada, apagar elegantemente los antiguos procesos de trabajo

USR1

Reabrir archivos de registro

USR2

Actualizar el archivo ejecutable

WINCH

Apagado elegante de procesos de trabajo

Puede enviar señales usando kill:

$ sudo kill -QUIT $(cat /run/angie.pid)

También se pueden controlar procesos de trabajo individuales usando señales, aunque esto es opcional. Las señales admitidas son:

TERM, INT

Apagado rápido

QUIT

Apagado elegante

USR1

Reabrir archivos de registro

WINCH

Terminación anómala para depuración (requiere que debug_points esté habilitado)

Cambiar la Configuración#

Para que Angie vuelva a leer el archivo de configuración, debe enviarse una señal HUP al proceso maestro. El proceso maestro primero comprueba la validez de la sintaxis y luego intenta aplicar la nueva configuración, lo que incluye abrir nuevos archivos de registro y sockets de escucha. Si aplicar la nueva configuración falla, el proceso maestro revierte los cambios y continúa operando con la configuración anterior. Si la aplicación tiene éxito, el proceso maestro inicia nuevos procesos de trabajo y envía mensajes a los antiguos solicitando que se apaguen elegantemente. Los antiguos procesos de trabajo cierran sus sockets de escucha y continúan atendiendo a los clientes existentes. Una vez servidos todos los clientes, los antiguos procesos de trabajo se apagan.

Angie rastrea los cambios de configuración para cada proceso. Los números de generación comienzan en 1 cuando el servidor se inicia por primera vez. Estos números se incrementan con cada recarga de configuración y son visibles en los títulos de procesos:

$ sudo angie
$ ps aux | grep angie

    angie: master process v1.10.2 #1 [angie]
    angie: worker process #1

Tras una recarga de configuración exitosa (independientemente de que haya cambios reales), Angie incrementa el número de generación para los procesos que recibieron la nueva configuración:

$ sudo kill -HUP $(cat /run/angie.pid)
$ ps aux | grep angie

    angie: master process v1.10.2 #2 [angie]
    angie: worker process #2

Si continúan operando procesos de trabajo de generaciones anteriores, serán visibles de inmediato:

$ ps aux | grep angie

    angie: worker process #1
    angie: worker process #2

Nota

No confunda el número de generación de la configuración con un "número de proceso"; Angie no utiliza numeración continua de procesos por motivos prácticos.

Rotación de Archivos de Registro#

Para rotar archivos de registro, primero renómbrelos. Luego, envíe una señal USR1 al proceso maestro. Este reabrirá todos los archivos de registro abiertos y los asignará al usuario sin privilegios bajo el cual se ejecutan los procesos de trabajo. Tras reabrir los archivos correctamente, el proceso maestro cierra todos los archivos abiertos y notifica a los procesos de trabajo que reabran sus archivos de registro. Estos abrirán los nuevos archivos y cerrarán los antiguos inmediatamente. Como resultado, los archivos antiguos quedan disponibles casi de inmediato para el posprocesamiento, como la compresión.

Actualización del Ejecutable en Vivo#

Para actualizar el ejecutable del servidor, primero sustituya el archivo antiguo por el nuevo. Luego, envíe una señal USR2 al proceso maestro. Este renombrará su archivo actual con el ID de proceso añadiéndole el sufijo .oldbin, por ejemplo /usr/local/angie/logs/angie.pid.oldbin, y luego iniciará el nuevo ejecutable, que a su vez iniciará nuevos procesos de trabajo.

Tenga en cuenta que el antiguo proceso maestro no cierra sus sockets de escucha y puede gestionarse para reiniciar sus procesos de trabajo si es necesario. Si el nuevo ejecutable no funciona como se espera, puede tomar una de las siguientes acciones:

  • Enviar la señal HUP al antiguo proceso maestro. Esto iniciará nuevos procesos de trabajo sin volver a leer la configuración. Puede apagar todos los nuevos procesos elegantemente enviando la señal QUIT al nuevo proceso maestro.

  • Enviar la señal TERM al nuevo proceso maestro. Este enviará un mensaje a sus procesos de trabajo solicitando que salgan inmediatamente. Si alguno no sale, envíe la señal KILL para forzarlo. Cuando el nuevo proceso maestro salga, el antiguo iniciará automáticamente nuevos procesos de trabajo.

Si el nuevo proceso maestro sale, el antiguo eliminará el sufijo .oldbin del nombre de archivo con el ID de proceso.

Si la actualización es exitosa, envíe la señal QUIT al antiguo proceso maestro, y solo quedarán los nuevos procesos.

Cuando está configurado, Angie también vaciará ciertas zonas de memoria compartida (actualmente, keys_zone en proxy_cache_path) al disco antes de actualizar, de modo que un nuevo proceso maestro pueda restaurarlas con un rendimiento mejorado. Si la restauración falla debido a un cambio en el tamaño de la zona, incompatibilidad binaria u otras razones, Angie registrará una alerta (failed to restore zone at address) y no utilizará el mecanismo de restauración de zonas.

Opciones de Línea de Comandos#

-?, -h

Mostrar ayuda para los parámetros de línea de comandos y salir.

--build-env

Mostrar información auxiliar sobre el entorno de compilación y salir.

-c file

Usar file como archivo de configuración en lugar del archivo predeterminado.

-e file

Usar file como archivo de registro de errores en lugar del archivo predeterminado. El valor especial stderr especifica la salida de error estándar.

-g directives

Aplicar directivas de configuración globales adicionales, por ejemplo: angie -g "pid /var/run/angie.pid; worker_processes `sysctl -n hw.ncpu`;".

-m, -M

Mostrar una lista de módulos incorporados (-m) o incorporados y cargados (-M), y luego salir.

-p prefix

Usar la ruta prefix especificada para angie (el directorio donde se encuentran los archivos del servidor; el valor predeterminado es /usr/local/angie/).

-q

Mostrar solo mensajes de error si se establece -t o -T; de lo contrario, no tiene efecto.

-s signal

Enviar una señal al proceso maestro: stop, quit, reopen, reload, etc.

-t

Probar el archivo de configuración y salir. Angie comprueba la sintaxis de la configuración, incluyendo de forma recursiva los archivos mencionados en ella.

-T

Igual que -t, pero además muestra la configuración completa en la salida estándar tras incluir recursivamente todos los archivos mencionados en la configuración.

-v

Mostrar la versión de Angie y salir.

-V

Mostrar la versión de Angie, la versión del compilador, la hora de compilación y los parámetros de compilación utilizados, y salir.