Migración de nginx a Angie#

Si estás cambiando de nginx a Angie, ¡felicidades! Tenemos una guía para ti.

Ten en cuenta que está diseñada para un escenario de reemplazo básico que se basa en una versión empaquetada de Angie. Si estás trabajando con contenedores, máquinas virtuales, rutas personalizadas o módulos, necesitarás ajustes adicionales.

Instalación de Angie#

Recomendamos usar los paquetes oficiales de nuestros repositorios; consulta los pasos de instalación de Angie para tu distribución. No inicies el servidor todavía; en su lugar, compruébalo con el comando sudo angie -V:

$ sudo angie -V

  Angie version: Angie/1.10.2
  nginx version: nginx/1.27.5
  built by gcc 11.4.0
  configure arguments: --prefix=/etc/angie --conf-path=/etc/angie/angie.conf ...

Como esto muestra, la configuración se encuentra en /etc/angie/ cuando Angie se instala desde un paquete.

Actualización de la configuración de Angie#

Angie generalmente requiere cambios mínimos en la configuración existente de nginx.

  1. Copia toda la configuración de nginx a /etc/angie/:

    $ sudo rsync -a --no-links /etc/nginx/ /etc/angie/
    

    Asumimos que la configuración de nginx está almacenada en /etc/nginx/; ajusta los pasos si tienes una ruta diferente.

  2. Renombra el archivo de configuración principal como espera Angie:

    $ sudo mv /etc/angie/nginx.conf /etc/angie/angie.conf
    
  3. Actualiza las rutas en toda la configuración de Angie, comenzando por el archivo de configuración principal. Los detalles dependen de cómo se instaló nginx, pero como mínimo necesitas actualizar lo siguiente.

    Cualquier ruta include que todavía apunte a /etc/nginx/:

    # include /etc/nginx/conf.d/*.conf;
    # include /etc/nginx/default.d/*.conf;
    # include /etc/nginx/http.d/*.conf;
    # include /etc/nginx/stream.d/*.conf;
    include /etc/angie/conf.d/*.conf;
    include /etc/angie/default.d/*.conf;
    include /etc/angie/http.d/*.conf;
    include /etc/angie/stream.d/*.conf;
    
    # include /etc/nginx/sites-enabled/*;
    include /etc/angie/sites-enabled/*;
    
    # include /etc/nginx/modules-enabled/*;
    include /etc/angie/modules-enabled/*;
    
    # include /etc/nginx/mime.types;
    include /etc/angie/mime.types;
    

    El archivo PID, que es importante para la gestión de procesos de Angie:

    # pid /var/run/nginx.pid;
    # -- or --
    # pid /run/nginx.pid;
    pid /run/angie.pid;
    

    Finalmente, access log y error log:

    # access_log /var/log/nginx/access.log;
    access_log /var/log/angie/access.log;
    
    # error_log /var/log/nginx/error.log;
    error_log /var/log/angie/error.log;
    

Hosts Virtuales#

Si se utiliza el directorio sites-enabled/ para incluir hosts virtuales, actualícelo también:

# include /etc/nginx/sites-enabled/*;
include /etc/angie/sites-enabled/*;

Luego recree los enlaces simbólicos en /etc/angie/sites-enabled/ para que todo funcione.

Liste los archivos de host virtual originales, por ejemplo:

$ ls -l /etc/nginx/sites-enabled/

  default -> /etc/nginx/sites-available/default

Observe su ubicación real; en este caso es /etc/nginx/sites-available/.

Si no los copió a /etc/angie/ anteriormente, cópielos ahora:

$ sudo rsync -a /etc/nginx/sites-available/ /etc/angie/sites-available/

Finalmente, recreate each symlink:

$ sudo ln -s /etc/angie/sites-available/default \
             /etc/angie/sites-enabled/default

Módulos Dinámicos#

Encuentre e e installer los equivalentes de Angie para todos los módulos dinámicos referenciados en la configuración de nginx, por ejemplo:

$ sudo nginx -T | grep load_module

  load_module modules/ngx_http_geoip2_module.so;
  load_module modules/ngx_stream_geoip2_module.so;
  ...

Esto significa que necesita instalar el paquete angie-module-geoip2, y así sucesivamente.

Hay dos formas populares de incluir la configuración de módulos dinámicos:

Si los módulos dinámicos se incluyen a través de /usr/share/nginx/modules/, actualice la ruta:

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
# include /usr/share/nginx/modules/*.conf;

include /usr/share/angie/modules/*.conf;

Luego copie los archivos de configuración del módulo:

$ sudo rsync -a /usr/share/nginx/modules/ /usr/share/angie/modules/

Finalmente, cambie la ruta load_module en cada archivo:

# load_module "/usr/lib64/nginx/modules/ngx_http_geoip2_module.so";
load_module "/usr/lib64/angie/modules/ngx_http_geoip2_module.so";

Directorio Raíz (Opcional)#

Si root apunta al directorio /usr/share/nginx/html/, puede cambiar la directiva para que apunte a Angie.

Copie el directorio y actualice el valor root en la configuración de Angie:

$ sudo rsync -a /usr/share/nginx/html/ /usr/share/angie/html/
# root /usr/share/nginx/html;
root /usr/share/angie/html;

Usuario y Grupo (Opcional)#

Aunque es suficiente dejar la directiva user como está, puede usar cuentas de Angie para mayor flexibilidad.

Actualice la configuración de user en la configuración de Angie:

# user www-data www-data;
user angie angie;

Cambie el propietario de todos los archivos de configuración, incluidos los archivos en /usr/share/angie/, por ejemplo:

$ sudo chown -R angie:angie /etc/angie/
$ sudo chown -R angie:angie /usr/share/angie/

Si la configuración de Angie tiene directivas root, cambie el propietario de los directorios especificados allí, por ejemplo:

$ sudo chown -R angie:angie /var/www/html/

Finalizando#

Para asegurarse de que no se haya pasado nada por alto, busque y corrija las menciones restantes de nginx en la configuración de Angie:

$ grep -rn --include='*.conf' 'nginx' /etc/angie/

Pruebas y Cambio#

Después de actualizar la configuración de Angie, el siguiente paso es verificar su sintaxis para asegurarse de que Angie pueda trabajar con ella, y luego hacer el cambio. Verifique que Angie acepte la nueva configuración:

$ sudo angie -t

Este comando analiza la configuración y reporta errores que impedirían el inicio de Angie; corrija cualquier problema y vuelva a ejecutar el comando.

Deteniendo nginx, Iniciando Angie#

Para minimizar el tiempo de inactividad, inicie Angie inmediatamente después de detener nginx:

$ sudo systemctl stop nginx && sudo systemctl start angie

Si es necesario, habilite el servicio Angie para que se inicie después del reinicio:

$ sudo systemctl enable angie

Migración completada#

¡Migración completa! Eso es todo; estás increíble.

Deshabilitando nginx#

Después de confirmar que Angie está funcionando de manera estable, puedes deshabilitar o eliminar nginx para evitar conflictos.

Lo mínimo que puedes hacer es deshabilitar el servicio:

$ sudo systemctl disable nginx

Configurando Características de Angie#

Es seguro asumir que estás migrando por una razón. ¿Por qué no ir más allá y configurar algunas de las características adicionales disponibles en Angie y Angie PRO que no están en nginx?