Manual de Deploy

Introdução

Este manual tem como objetivo orientar o processo de deploy de cinco componentes essenciais do sistema. Cada um deles possui etapas específicas de configuração e pode envolver ajustes em diferentes camadas da infraestrutura.

Os componentes a serem implementados são:

  • Bancos de Dados (MySQL) – Responsável pelo armazenamento das informações essenciais do sistema.
  • Painel Administrativo (C#/.NET 6.0) – Interface para administração e gerenciamento dos dados.
  • API de Consultas (C#/.NET 6.0) – Serviço que processa e disponibiliza as informações para os demais módulos.
  • Painel de Consulta (Angular) – Interface para visualização e interação com os dados.
  • Painel de Documentação (Docusaurus) – Plataforma para documentação do sistema.

Foi fornecido um arquivo ZIP de deploy contendo cinco pastas, uma para cada um dos itens acima. Cada pasta contém os arquivos necessários para a instalação e configuração do respectivo componente.

As etapas de deploy incluem configuração de permissões, ajustes de ambiente, configuração de serviços e proxy reverso para garantir o funcionamento adequado de cada componente.

Os próximos tópicos detalham o passo a passo para a instalação e configuração de cada um desses elementos.

Pré-requisitos

Antes de iniciar o processo de deploy, certifique-se de que os seguintes requisitos estão atendidos:

1. Sistema Operacional

  • Distribuições suportadas:
    • Ubuntu (20.04 ou superior)
    • Debian (10 ou superior)
    • Fedora (34 ou superior)
    • AlmaLinux (8 ou superior)
    • RockyLinux (8 ou superior)
    • CentOS (7 ou superior)

2. Dependências do Sistema

Instale as dependências necessárias para o funcionamento dos componentes:

Para Ubuntu/Debian:

sudo apt update
sudo apt install -y apache2 mysql-server dotnet-sdk-6.0 nodejs npm unzip

Para Fedora:

sudo dnf update
sudo dnf install -y httpd mariadb-server dotnet-sdk-6.0 nodejs npm unzip

Para AlmaLinux/RockyLinux/CentOS:

sudo yum update
sudo yum install -y httpd mariadb-server dotnet-sdk-6.0 nodejs npm unzip

3. Configuração do Apache

  1. Habilite e inicie o serviço do Apache:

    Para Ubuntu/Debian

    sudo systemctl enable apache2
    sudo systemctl start apache2

    Para Fedora/AlmaLinux/RockyLinux/CentOS

    sudo systemctl enable httpd
    sudo systemctl start httpd
  2. Verifique se o Apache está funcionando:
    Acesse http://localhost no navegador ou use o comando:

    curl http://localhost

4. Configuração do MySQL

  1. Inicie e habilite o serviço do MySQL:

    Para Ubuntu/Debian

    sudo systemctl enable mysql
    sudo systemctl start mysql

    Para Fedora/AlmaLinux/RockyLinux/CentOS

    sudo systemctl enable mariadb
    sudo systemctl start mariadb
  2. Execute o script de segurança do MySQL:

    sudo mysql_secure_installation

5. Node.js e npm

  • Verifique se o Node.js e npm estão instalados corretamente:
    node -v
    npm -v

6. Arquivos de Deploy

  • Extraia o arquivo ZIP fornecido em um diretório de sua escolha:
    unzip arquivo_deploy.zip -d /caminho/da/pasta

Configuração do MySQL

1. Instalação e Configuração Inicial

Para Ubuntu/Debian:

  1. Instale o MySQL:

    sudo apt update
    sudo apt install -y mysql-server
  2. Inicie e habilite o serviço:

    sudo systemctl start mysql
    sudo systemctl enable mysql

Para Fedora:

  1. Instale o MariaDB:

    sudo dnf update
    sudo dnf install -y mariadb-server
  2. Inicie e habilite o serviço:

    sudo systemctl start mariadb
    sudo systemctl enable mariadb

Para AlmaLinux/RockyLinux/CentOS:

  1. Instale o MariaDB:

    sudo yum update
    sudo yum install -y mariadb-server
  2. Inicie e habilite o serviço:

    sudo systemctl start mariadb
    sudo systemctl enable mariadb
  3. Execute o script de segurança do MySQL (para todos os sistemas):

    sudo mysql_secure_installation
    • Siga as instruções para definir uma senha segura para o usuário root e remover acessos anônimos.

2. Criação dos Bancos de Dados

Caso seja uma nova instalação:

  1. Acesse o MySQL como root:

    sudo mysql -u root -p
  2. Crie os bancos de dados com codificação utf8mb4:

    CREATE DATABASE db_fjpdados_auth CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
    CREATE DATABASE db_fjpdados_data CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  3. Crie o usuário dbUsrFJP e conceda as permissões necessárias:

    CREATE USER 'dbUsrFJP'@'localhost' IDENTIFIED BY 'aFbQ2&=,ISk/aG+M';
    GRANT ALL PRIVILEGES ON db_fjpdados_auth.* TO 'dbUsrFJP'@'localhost';
    GRANT ALL PRIVILEGES ON db_fjpdados_data.* TO 'dbUsrFJP'@'localhost';
    FLUSH PRIVILEGES;
  4. Importe os arquivos de banco de dados disponíveis na pasta databases do deploy:

    mysql -u dbUsrFJP -p db_fjpdados_auth < /caminho/da/pasta/databases/db_fjpdados_auth.sql
    mysql -u dbUsrFJP -p db_fjpdados_data < /caminho/da/pasta/databases/db_fjpdados_data.sql

Caso seja uma migração:

  1. Faça o backup dos bancos de dados existentes:

    mysqldump -u dbUsrFJP -p db_fjpdados_auth > backup_db_fjpdados_auth.sql
    mysqldump -u dbUsrFJP -p db_fjpdados_data > backup_db_fjpdados_data.sql
  2. Restaure os backups no novo servidor:

    mysql -u dbUsrFJP -p db_fjpdados_auth < backup_db_fjpdados_auth.sql
    mysql -u dbUsrFJP -p db_fjpdados_data < backup_db_fjpdados_data.sql

3. Configuração das Connection Strings

As ferramentas do sistema utilizam as seguintes connection strings para se conectar ao MySQL:

  • AppConnection:

    server=localhost;port=3306;database=db_fjpdados_data;user=dbUsrFJP;password=aFbQ2&=,ISk/aG+M;ConvertZeroDateTime=True;allowLoadLocalInfile=true;Allow User Variables=True;Pooling=true;
  • PainelWebConnection:

    server=localhost;port=3306;database=db_fjpdados_auth;user=dbUsrFJP;password=aFbQ2&=,ISk/aG+M;ConvertZeroDateTime=True;

Certifique-se de que essas strings estejam corretamente configuradas nos arquivos de configuração das ferramentas.


4. Testes

  1. Verifique se os bancos de dados foram criados e estão acessíveis:

    mysql -u dbUsrFJP -p -e "SHOW DATABASES;"
  2. Confirme se o usuário dbUsrFJP tem permissões adequadas:

    mysql -u dbUsrFJP -p -e "SHOW GRANTS FOR 'dbUsrFJP'@'localhost';"

Instalação do Painel Administrativo

1. Preparação do Ambiente

  1. Crie o diretório para o Painel Administrativo:

    sudo mkdir -p /var/www/html/adm
  2. Copie os arquivos do Painel Administrativo (da pasta de deploy) para o diretório criado:

    sudo cp -r /caminho/da/pasta/deploy/painel_adm/* /var/www/html/adm/
  3. Ajuste as permissões do diretório para o usuário do serviço (ex: www-data para Apache no Ubuntu/Debian ou apache no Fedora/AlmaLinux/RockyLinux/CentOS):

    Para Ubuntu/Debian:

    sudo chown -R www-data:www-data /var/www/html/adm
    sudo chmod -R 755 /var/www/html/adm

    Para Fedora/AlmaLinux/RockyLinux/CentOS:

    sudo chown -R apache:apache /var/www/html/adm
    sudo chmod -R 755 /var/www/html/adm

2. Configuração dos Arquivos do Painel

  1. Ajuste os arquivos de configuração do Painel Administrativo com as credenciais e endereço do banco de dados.
    • Localize o arquivo de configuração (ex: appsettings.json) e atualize as connection strings:
      "ConnectionStrings": {
        "AppConnection": "server=localhost;port=3306;database=db_fjpdados_data;user=dbUsrFJP;password=aFbQ2&=,ISk/aG+M;ConvertZeroDateTime=True;allowLoadLocalInfile=true;Allow User Variables=True;Pooling=true;",
        "PainelWebConnection": "server=localhost;port=3306;database=db_fjpdados_auth;user=dbUsrFJP;password=aFbQ2&=,ISk/aG+M;ConvertZeroDateTime=True;"
      }

3. Criação do Serviço do Painel

  1. Crie um arquivo de serviço para o Painel Administrativo:

    sudo nano /etc/systemd/system/fjp.adm.service
  2. Adicione o seguinte conteúdo ao arquivo:

    [Unit]
    Description=Serviço do Painel Administrativo FJP
    After=network.target
    
    [Service]
    WorkingDirectory=/var/www/html/adm
    ExecStart=/usr/bin/dotnet /var/www/html/adm/NomeDoProjeto.dll --urls=http://localhost:5001
    Restart=always
    RestartSec=10
    User=www-data  # Para Ubuntu/Debian
    # User=apache  # Para Fedora/AlmaLinux/RockyLinux/CentOS
    Environment=ASPNETCORE_ENVIRONMENT=Production
    
    [Install]
    WantedBy=multi-user.target
  3. Recarregue o systemd e inicie o serviço:

    sudo systemctl daemon-reload
    sudo systemctl start fjp.adm
    sudo systemctl enable fjp.adm
  4. Verifique o status do serviço:

    sudo systemctl status fjp.adm

4. Configuração do Apache (Proxy Reverso)

  1. Crie um arquivo de configuração para o subdomínio panel.fjpdados.fjp.mg.gov.br:

    Para Ubuntu/Debian

    sudo nano /etc/apache2/sites-available/panel.conf

    Para Fedora/AlmaLinux/RockyLinux/CentOS

    sudo nano /etc/httpd/conf.d/panel.conf
  2. Adicione o seguinte conteúdo ao arquivo:

    <VirtualHost *:80>
        ServerName panel.fjpdados.fjp.mg.gov.br
        ProxyPreserveHost On
        ProxyPass / http://localhost:5001/
        ProxyPassReverse / http://localhost:5001/
        ErrorLog ${APACHE_LOG_DIR}/panel_error.log
        CustomLog ${APACHE_LOG_DIR}/panel_access.log combined
    </VirtualHost>
  3. Habilite o site e recarregue o Apache:

    Para Ubuntu/Debian:

    sudo a2ensite panel.conf
    sudo systemctl reload apache2

    Para Fedora/AlmaLinux/RockyLinux/CentOS:

    sudo systemctl restart httpd

5. Testes de Conexão

  1. Acesse o Painel Administrativo pelo navegador:

    • URL: https://panel.fjpdados.fjp.mg.gov.br
  2. Verifique os logs do serviço e do Apache em caso de erros:

    sudo journalctl -u fjp.adm  # Logs do serviço
    sudo tail -f /var/log/apache2/panel_error.log  # Logs do Apache (Ubuntu/Debian)
    sudo tail -f /var/log/httpd/panel_error.log  # Logs do Apache (Fedora/AlmaLinux/RockyLinux/CentOS)

Instalação da API de Consulta

1. Preparação do Ambiente

  1. Crie o diretório para a API de Consulta:

    sudo mkdir -p /var/www/html/api
  2. Copie os arquivos da API de Consulta (da pasta de deploy) para o diretório criado:

    sudo cp -r /caminho/da/pasta/deploy/api_consulta/* /var/www/html/api/
  3. Ajuste as permissões do diretório para o usuário do serviço (ex: www-data para Apache no Ubuntu/Debian ou apache no Fedora/AlmaLinux/RockyLinux/CentOS):

    Para Ubuntu/Debian:

    sudo chown -R www-data:www-data /var/www/html/api
    sudo chmod -R 755 /var/www/html/api

    Para Fedora/AlmaLinux/RockyLinux/CentOS:

    sudo chown -R apache:apache /var/www/html/api
    sudo chmod -R 755 /var/www/html/api

2. Configuração dos Arquivos da API

  1. Ajuste os arquivos de configuração da API com as credenciais e endereço do banco de dados.
    • Localize o arquivo de configuração (ex: appsettings.json) e atualize as connection strings:
      "ConnectionStrings": {
        "AppConnection": "server=localhost;port=3306;database=db_fjpdados_data;user=dbUsrFJP;password=aFbQ2&=,ISk/aG+M;ConvertZeroDateTime=True;allowLoadLocalInfile=true;Allow User Variables=True;Pooling=true;",
        "PainelWebConnection": "server=localhost;port=3306;database=db_fjpdados_auth;user=dbUsrFJP;password=aFbQ2&=,ISk/aG+M;ConvertZeroDateTime=True;"
      }

3. Criação do Serviço da API

  1. Crie um arquivo de serviço para a API de Consulta:

    sudo nano /etc/systemd/system/fjp.api.service
  2. Adicione o seguinte conteúdo ao arquivo:

    [Unit]
    Description=Serviço da API de Consulta FJP
    After=network.target
    
    [Service]
    WorkingDirectory=/var/www/html/api
    ExecStart=/usr/bin/dotnet /var/www/html/api/NomeDoProjeto.dll --urls=http://localhost:5002
    Restart=always
    RestartSec=10
    User=www-data  # Para Ubuntu/Debian
    # User=apache  # Para Fedora/AlmaLinux/RockyLinux/CentOS
    Environment=ASPNETCORE_ENVIRONMENT=Production
    
    [Install]
    WantedBy=multi-user.target
  3. Recarregue o systemd e inicie o serviço:

    sudo systemctl daemon-reload
    sudo systemctl start fjp.api
    sudo systemctl enable fjp.api
  4. Verifique o status do serviço:

    sudo systemctl status fjp.api

4. Configuração do Apache (Proxy Reverso)

  1. Crie um arquivo de configuração para o subdomínio api.fjpdados.fjp.mg.gov.br:

    Para Ubuntu/Debian

    sudo nano /etc/apache2/sites-available/api.conf

    Para Fedora/AlmaLinux/RockyLinux/CentOS

    sudo nano /etc/httpd/conf.d/api.conf
  2. Adicione o seguinte conteúdo ao arquivo:

    <VirtualHost *:80>
        ServerName api.fjpdados.fjp.mg.gov.br
        ProxyPreserveHost On
        ProxyPass / http://localhost:5002/
        ProxyPassReverse / http://localhost:5002/
        ErrorLog ${APACHE_LOG_DIR}/api_error.log
        CustomLog ${APACHE_LOG_DIR}/api_access.log combined
    </VirtualHost>
  3. Habilite o site e recarregue o Apache:

    Para Ubuntu/Debian:

    sudo a2ensite api.conf
    sudo systemctl reload apache2

    Para Fedora/AlmaLinux/RockyLinux/CentOS:

    sudo systemctl restart httpd

5. Testes de Conexão

  1. Acesse a API de Consulta pelo navegador ou via terminal:

    • URL: http://api.fjpdados.fjp.mg.gov.br
    • Exemplo de teste via curl:
      curl http://api.fjpdados.fjp.mg.gov.br/endpoint_de_teste
  2. Verifique os logs do serviço e do Apache em caso de erros:

    sudo journalctl -u fjp.api  # Logs do serviço
    sudo tail -f /var/log/apache2/api_error.log  # Logs do Apache (Ubuntu/Debian)
    sudo tail -f /var/log/httpd/api_error.log  # Logs do Apache (Fedora/AlmaLinux/RockyLinux/CentOS)

Instalação do Painel de Consulta

1. Preparação do Ambiente

  1. Crie o diretório para o Painel de Consulta:

    sudo mkdir -p /var/www/html/consulta
  2. Copie os arquivos do Painel de Consulta (já buildados) para o diretório criado:

    sudo cp -r /caminho/da/pasta/deploy/painel_consulta/* /var/www/html/consulta/
  3. Ajuste as permissões do diretório para o usuário do Apache:

    Para Ubuntu/Debian:

    sudo chown -R www-data:www-data /var/www/html/consulta
    sudo chmod -R 755 /var/www/html/consulta

    Para Fedora/AlmaLinux/RockyLinux/CentOS:

    sudo chown -R apache:apache /var/www/html/consulta
    sudo chmod -R 755 /var/www/html/consulta

2. Configuração dos Arquivos do Painel

  1. Ajuste os arquivos de configuração dentro da pasta assets para apontar para o endereço correto da API:
    • Localize o arquivo de configuração (ex: assets/app.config.json) e atualize o endereço da API:
      {
        "apiUrl": "http://api.fjpdados.fjp.mg.gov.br"
      }

3. Configuração do Apache (Virtual Host)

  1. Crie um arquivo de configuração para o subdomínio www.fjpdados.fjp.mg.gov.br/consulta:

    sudo nano /etc/apache2/sites-available/consulta.conf  # Para Ubuntu/Debian
    sudo nano /etc/httpd/conf.d/consulta.conf  # Para Fedora/AlmaLinux/RockyLinux/CentOS
  2. Adicione o seguinte conteúdo ao arquivo:

    <VirtualHost *:80>
        ServerName www.fjpdados.fjp.mg.gov.br
        DocumentRoot /var/www/html/consulta
    
        <Directory /var/www/html/consulta>
            AllowOverride All
            Require all granted
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/consulta_error.log
        CustomLog ${APACHE_LOG_DIR}/consulta_access.log combined
    </VirtualHost>
  3. Habilite o site e recarregue o Apache:

    Para Ubuntu/Debian:

    sudo a2ensite consulta.conf
    sudo systemctl reload apache2

    Para Fedora/AlmaLinux/RockyLinux/CentOS:

    sudo systemctl restart httpd

4. Testes de Conexão

  1. Acesse o Painel de Consulta pelo navegador:

    • URL: http://www.fjpdados.fjp.mg.gov.br/consulta
  2. Verifique se o painel está carregando corretamente e se consegue se comunicar com a API.

  3. Em caso de erros, verifique os logs do Apache:

    sudo tail -f /var/log/apache2/consulta_error.log  # Para Ubuntu/Debian
    sudo tail -f /var/log/httpd/consulta_error.log  # Para Fedora/AlmaLinux/RockyLinux/CentOS

Instalação do Painel de Documentação

1. Preparação do Ambiente

  1. Crie o diretório para o Painel de Documentação:

    sudo mkdir -p /var/www/html/docs
  2. Copie os arquivos do Painel de Documentação (já buildados) para o diretório criado:

    sudo cp -r /caminho/da/pasta/deploy/painel_documentacao/* /var/www/html/docs/
  3. Ajuste as permissões do diretório para o usuário do Apache:

    Para Ubuntu/Debian:

    sudo chown -R www-data:www-data /var/www/html/docs
    sudo chmod -R 755 /var/www/html/docs

    Para Fedora/AlmaLinux/RockyLinux/CentOS:

    sudo chown -R apache:apache /var/www/html/docs
    sudo chmod -R 755 /var/www/html/docs

2. Configuração do Apache (Virtual Host)

  1. Crie um arquivo de configuração para o subdomínio panel.fjpdados.fjp.mg.gov.br/docs:

    sudo nano /etc/apache2/sites-available/docs.conf  # Para Ubuntu/Debian
    sudo nano /etc/httpd/conf.d/docs.conf  # Para Fedora/AlmaLinux/RockyLinux/CentOS
  2. Adicione o seguinte conteúdo ao arquivo, garantindo que não haja conflito com o Painel Administrativo:

    <VirtualHost *:80>
        ServerName panel.fjpdados.fjp.mg.gov.br
        DocumentRoot /var/www/html/docs
    
        <Directory /var/www/html/docs>
            AllowOverride All
            Require all granted
        </Directory>
    
        Alias /docs "/var/www/html/docs"
        <Directory "/var/www/html/docs">
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    
        ErrorLog ${APACHE_LOG_DIR}/docs_error.log
        CustomLog ${APACHE_LOG_DIR}/docs_access.log combined
    </VirtualHost>
  3. Habilite o site e recarregue o Apache:

    Para Ubuntu/Debian:

    sudo a2ensite docs.conf
    sudo systemctl reload apache2

    Para Fedora/AlmaLinux/RockyLinux/CentOS:

    sudo systemctl restart httpd

3. Testes de Conexão

  1. Acesse o Painel de Documentação pelo navegador:

    • URL: http://panel.fjpdados.fjp.mg.gov.br/docs
  2. Verifique se o painel está carregando corretamente e se todas as páginas estão acessíveis.

  3. Em caso de erros, verifique os logs do Apache:

    sudo tail -f /var/log/apache2/docs_error.log  # Para Ubuntu/Debian
    sudo tail -f /var/log/httpd/docs_error.log  # Para Fedora/AlmaLinux/RockyLinux/CentOS