<!-- review: finished -->

<a id="migration"></a>

# 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](https://pt.angie.software//angie/docs/installation/docker.md#docker-images),
máquinas virtuais, caminhos personalizados ou
[módulos](https://pt.angie.software//angie/docs/installation/index.md#install-dynamicmodules),
você precisará de ajustes adicionais.

<a id="installing-angie"></a>

## Instalando o Angie

Recomendamos usar os pacotes oficiais
dos [nossos repositórios](https://pt.angie.software//angie/docs/installation/index.md#install-packages);
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**:

```console
$ sudo angie -V

  Angie version: Angie/|version|
  nginx version: nginx/|nginxversion|
  built by gcc 11.4.0
  configure arguments: --prefix=/etc/angie --conf-path=/etc/angie/angie.conf ...
```

Como isso mostra,
a [configuração](https://pt.angie.software//angie/docs/configuration/configfile.md#configfile)
está localizada em `/etc/angie/`
quando o Angie é instalado a partir de um pacote.

<a id="updating-angie-configuration"></a>

## 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/`:
   ```console
   $ 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:
   ```console
   $ 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](https://pt.angie.software//angie/docs/configuration/modules/core.md#include) que ainda apontem para `/etc/nginx/`:
   ```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](https://pt.angie.software//angie/docs/configuration/modules/core.md#pid), que é importante para o gerenciamento de processos do Angie:
   ```nginx
   # pid /var/run/nginx.pid;
   # -- ou --
   # pid /run/nginx.pid;
   pid /run/angie.pid;
   ```

   Finalmente,
   [log de acesso](https://pt.angie.software//angie/docs/configuration/modules/http/http_log.md#access-log) e [log de erro](https://pt.angie.software//angie/docs/configuration/modules/core.md#error-log):
   ```nginx
   # 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;
   ```

<a id="migration-sites"></a>

### Hosts Virtuais

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

```nginx
# 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:

```console
$ 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:

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

Finalmente, recrie cada link simbólico:

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

<a id="dynamic-modules"></a>

### Módulos Dinâmicos

Encontre e [instale](https://pt.angie.software//angie/docs/installation/index.md#install-dynamicmodules)
equivalentes do Angie para todos os módulos dinâmicos
referenciados na configuração nginx, por exemplo:

```console
$ 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:

`/usr/share/nginx/modules/`

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

```nginx
# 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:

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

Finalmente, altere o caminho [load_module](https://pt.angie.software//angie/docs/configuration/modules/core.md#load-module) em cada arquivo:

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

`/etc/nginx/modules-enabled/`

Se módulos dinâmicos são incluídos via
`/etc/nginx/modules-enabled/`,
atualize o caminho:

```nginx
# include /etc/nginx/modules-enabled/*.conf;
include /etc/angie/modules-enabled/*.conf;
```

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

Liste os arquivos de configuração de módulo originais, por exemplo:

```console
$ ls -l /etc/nginx/modules-enabled/

  mod-http-geoip2.conf -> /usr/share/nginx/modules-available/mod-http-geoip2.conf
```

Note sua localização real;
aqui é `/usr/share/nginx/modules-available/`.

Copie-os para `/usr/share/angie/`:

```console
$ sudo rsync -a /usr/share/nginx/modules-available/ /usr/share/angie/modules-available/
```

Finalmente, recrie cada link simbólico:

```console
$ sudo ln -s /usr/share/angie/modules-available/mod-http-geoip2.conf \
             /etc/angie/modules-enabled/mod-http-geoip2.conf
```

<a id="root-directory-optional"></a>

### Diretório Root (Opcional)

Se [root](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#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:

```console
$ sudo rsync -a /usr/share/nginx/html/ /usr/share/angie/html/
```

```nginx
# root /usr/share/nginx/html;
root /usr/share/angie/html;
```

<a id="user-and-group-optional"></a>

### Usuário e Grupo (Opcional)

Embora seja suficiente deixar a diretiva [user](https://pt.angie.software//angie/docs/configuration/modules/core.md#user) como está,
você pode usar contas do Angie para flexibilidade.

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

```nginx
# 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:

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

Se a configuração do Angie tem diretivas [root](https://pt.angie.software//angie/docs/configuration/modules/http/index.md#root),
altere o proprietário dos diretórios especificados lá,
por exemplo:

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

<a id="wrapping-up"></a>

### Finalizando

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

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

<a id="testing-and-switching"></a>

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

```console
$ 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.

<a id="stopping-nginx-starting-angie"></a>

### Parando o nginx, Iniciando o Angie

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

```console
$ sudo systemctl stop nginx && sudo systemctl start angie
```

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

```console
$ sudo systemctl enable angie
```

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

<a id="disabling-nginx"></a>

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

```console
$ sudo systemctl disable nginx
```

<a id="working-with-ssl-certificates"></a>

## Trabalhando com Certificados SSL

Se você usou o Certbot para gerenciar certificados SSL com o nginx,
ele continuará a funcionar com o Angie.

<a id="using-certbot-with-angie"></a>

### Usando o Certbot com o Angie

Suportar o Angie no Certbot requer esforço mínimo,
já que o Angie é retrocompatível com o nginx.
Para o Certbot funcionar, é suficiente criar um link simbólico
e especificar os parâmetros apropriados:

```console
# Create a symlink for Certbot compatibility
$ sudo ln -s /etc/angie/angie.conf /etc/angie/nginx.conf

# Obtain a certificate for a domain
$ sudo certbot --nginx --nginx-server-root=/etc/angie --nginx-ctl=angie -d example.com -d www.example.com

# Automatically renew certificates
$ sudo certbot renew

# Check certificate status
$ sudo certbot certificates
```

Após migrar para o Angie, o Certbot continuará a renovar automaticamente os certificados
através de tarefas **cron** ou timers **systemd** configurados.

<a id="migrating-from-certbot-to-the-built-in-acme-module"></a>

### Migrando do Certbot para o Módulo ACME Integrado

O Angie inclui um [módulo ACME](https://pt.angie.software//angie/docs/configuration/modules/http/http_acme.md#http-acme) integrado,
que permite obter e renovar certificados SSL automaticamente
sem usar ferramentas externas como o Certbot.

Vantagens do módulo ACME integrado:

- integração completa com a configuração do Angie;
- renovação automática de certificados sem serviços adicionais;
- suporte para validação HTTP e DNS;
- capacidade de obter certificados wildcard.

Para instruções detalhadas sobre como migrar do Certbot para o módulo ACME integrado,
consulte a seção [Migrando do certbot](https://pt.angie.software//angie/docs/configuration/acme.md#acme-config-certbot).

<a id="configuring-angie-features"></a>

## 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](https://pt.angie.software//angie/docs/oss_changes.md#oss-changes) e [Angie PRO](https://pt.angie.software//angie/docs/pro_changes.md#pro-changes)
que não estão no nginx?
