Migrando do nginx para o Angie#

Se você está mudando do nginx para o Angie, parabéns! Temos um guia para você.

Tenha em mente que ele é direcionado para um cenário básico de substituição que depende de uma versão empacotada do Angie. Se você está trabalhando com contêineres, máquinas virtuais, caminhos personalizados, ou módulos, você precisará de ajustes adicionais.

Instalando o Angie#

Recomendamos usar os pacotes oficiais dos nossos repositórios; veja os passos de instalação do Angie para sua distribuição. Não inicie o servidor ainda; em vez disso, verifique-o com o 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 isso mostra, a configuração está localizada em /etc/angie/ quando o Angie é instalado a partir de um pacote.

Atualizando a Configuração do Angie#

O Angie geralmente requer mudanças mínimas na configuração nginx existente.

  1. Copie toda a configuração nginx para /etc/angie/:

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

    Assumimos que a configuração nginx está armazenada em /etc/nginx/; ajuste os passos se você tiver um caminho diferente.

  2. Renomeie o arquivo de configuração principal como o Angie espera:

    $ sudo mv /etc/angie/nginx.conf /etc/angie/angie.conf
    
  3. Atualize os caminhos em toda a configuração do Angie, começando com o arquivo de configuração principal. Os detalhes dependem de como o nginx foi instalado, mas no mínimo você precisa atualizar o seguinte.

    Quaisquer caminhos include que ainda apontem para /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;
    

    O arquivo PID, que é importante para o gerenciamento de processos do Angie:

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

    Finalmente, log de acesso e log de erro:

    # 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 Virtuais#

Se o diretório sites-enabled/ é usado para incluir hosts virtuais, atualize-o também:

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

Então recrie os links simbólicos em /etc/angie/sites-enabled/ para fazer tudo funcionar.

Liste os arquivos de host virtual originais, por exemplo:

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

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

Note sua localização real; aqui é /etc/nginx/sites-available/.

Se você não os copiou para /etc/angie/ anteriormente, copie-os agora:

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

Finalmente, recrie cada link simbólico:

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

Módulos Dinâmicos#

Encontre e instale equivalentes do Angie para todos os módulos dinâmicos referenciados na configuração nginx, por exemplo:

$ sudo nginx -T | grep load_module

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

Isso significa que você precisa instalar o pacote angie-module-geoip2, e assim por diante.

Existem duas maneiras populares de incluir configuração de módulo dinâmico:

Se módulos dinâmicos são incluídos via /usr/share/nginx/modules/, atualize o caminho:

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

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

Então copie os arquivos de configuração do módulo:

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

Finalmente, altere o caminho load_module em cada arquivo:

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

Diretório Raiz (Opcional)#

Se root aponta para o diretório /usr/share/nginx/html/, você pode alterar a diretiva para apontar para o Angie.

Copie o diretório e atualize o valor root na configuração do Angie:

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

Usuário e Grupo (Opcional)#

Embora seja suficiente deixar a diretiva user como está, você pode usar contas do Angie para flexibilidade.

Atualize as configurações user na configuração do Angie:

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

Altere o proprietário de todos os arquivos de configuração, incluindo arquivos em /usr/share/angie/, por exemplo:

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

Se a configuração do Angie tem diretivas root, altere o proprietário dos diretórios especificados lá, por exemplo:

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

Finalizando#

Para ter certeza de que nada foi perdido, encontre e corrija menções restantes de nginx na configuração do Angie:

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

Testando e Mudando#

Após atualizar a configuração do Angie, o próximo passo é verificar sua sintaxe para garantir que o Angie possa trabalhar com ela, e então fazer a mudança. Verifique se o Angie aceita a nova configuração:

$ sudo angie -t

Este comando analisa a configuração e reporta erros que bloqueariam a inicialização do Angie; corrija quaisquer problemas e execute o comando novamente.

Parando o nginx, Iniciando o Angie#

Para minimizar o tempo de inatividade, inicie o Angie imediatamente após parar o nginx:

$ sudo systemctl stop nginx && sudo systemctl start angie

Se necessário, habilite o serviço Angie para iniciar após a reinicialização:

$ sudo systemctl enable angie

Migração completa! É isso; você é incrível.

Desabilitando o nginx#

Após confirmar que o Angie está executando de forma estável, você pode desabilitar ou remover o nginx para evitar conflitos.

O mínimo que você pode fazer é desabilitar o serviço:

$ sudo systemctl disable nginx

Configurando Recursos do Angie#

É seguro assumir que você está migrando por uma razão. Por que não ir além e configurar alguns dos recursos adicionais disponíveis no Angie e Angie PRO que não estão no nginx?