SocialSoftwareLivingLab / zerobito

Projeto ZerÓbito
2 stars 2 forks source link

Implementação de um Ambiente de Homologação para Melhoria do Ciclo de Desenvolvimento #35

Open Antonio214 opened 4 months ago

Antonio214 commented 4 months ago

Contexto

Após discussões com a equipe de desenvolvimento e análise das dores enfrentadas no ciclo de desenvolvimento atual, identificamos a ausência de um ambiente de homologação dedicado. Atualmente, a transição direta do desenvolvimento para a produção tem levado a desafios na validação de novas funcionalidades. Como já relatado pelos desenvolvedores, existiram vezes em que o time não tinha certeza se poderia testar uma nova funcionalidade, por medo de quebrar o ambiente momentos antes de uma apresentação.

Proposta

Sugerimos a implementação de um ambiente de homologação como uma etapa intermediária entre o desenvolvimento e a produção. Esse ambiente servirá como um campo de testes realista, permitindo que:

Próximos Passos

Para a implementação, propomos as seguintes etapas: [ ] - Liberar mais uma porta no servidor [x] - Configurar o apache para servir uma nova aplicação [ ] - Realizar alterações na configuração do github action para que ocorra o novo deploy

Antonio214 commented 4 months ago

Configuração do apache no servidor

Criei uma nova pasta: mkdir /opt/apps/frontend-homo

Alterei as permissões da pasta para que ela seja gerenciada pelo grupo do web-server sudo chown -R www-data:www-data /opt/apps/frontend-homo

Criei um novo 'Virtual File Host' sudo nano /etc/apache2/sites-available/zerobito-homo.conf

Conteúdo do Arquivo

<VirtualHost *:5000>
    ServerAdmin webmaster@localhost
    DocumentRoot /opt/apps/frontend-homo/build

    <Directory /opt/apps/frontend-homo/build>
        Options Indexes FollowSymLinks
        Require all granted
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule ^ index.html [L]
    AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Testei as configurações sudo a2ensite newsite.com.conf

Reload no Apache para aplicar as alterações sudo systemctl reload apache2

Antonio214 commented 4 months ago

Uma explicação mais detalhada sobre o conteúdo do arquivo de configuração

Função Geral A configuração efetivamente configura um ambiente de servidor adequado para uma aplicação de página única (SPA) redirecionando todas as solicitações não existentes para index.html, permitindo que o roteador de front-end trate a solicitação. Isso é essencial para SPAs que usam roteamento do lado do cliente.

<VirtualHost :5000> Esta diretiva inicia a definição de um host virtual. O indica que este host virtual responderá a solicitações em qualquer interface de rede do servidor. O :5000 especifica que ele ouvirá solicitações na porta 5000.

ServerAdmin webmaster@localhost Isso define o e-mail de contato para o administrador do servidor. Este endereço é usado pelo Apache para relatar problemas com o servidor e é frequentemente exibido em mensagens de erro para os usuários finais. NOTA: Substituir por um email que não seja placeholder.

DocumentRoot /opt/apps/frontend-homo/build Especifica o diretório do qual o Apache servirá arquivos para este host virtual. Neste caso, os arquivos são servidos de /opt/apps/frontend-homo/build. Este é geralmente o local onde os arquivos construídos da sua aplicação são armazenados, se for uma aplicação web.

<Directory /opt/apps/frontend-homo/build> Este bloco de diretivas aplica-se ao diretório do sistema de arquivos listado (que corresponde ao DocumentRoot). Aqui está o que cada diretiva dentro deste bloco significa: Options Indexes FollowSymLinks: Isso permite que o servidor siga links simbólicos neste diretório e Indexes permite que o servidor liste os conteúdos do diretório. Require all granted: Isso concede acesso ao diretório a todos os usuários. RewriteEngine On: Habilita o uso dos recursos de reescrita de URL fornecidos pelo mod_rewrite. RewriteCond %{REQUEST_FILENAME} !-f: Esta condição verifica se o nome do arquivo solicitado não corresponde a um arquivo existente. RewriteCond %{REQUEST_FILENAME} !-d: Isso verifica se o nome do arquivo solicitado não corresponde a um diretório existente. RewriteRule ^ index.html [L]: Esta regra redireciona todas as solicitações (que não correspondem a um arquivo ou diretório) para index.html. É comumente usado em aplicações de página única (SPAs) onde todas as solicitações são tratadas pelo mesmo arquivo de entrada. AllowOverride All: Permite o uso de .htaccess dentro do diretório para substituir configurações configuradas globalmente.

ErrorLog ${APACHE_LOG_DIR}/error.log Define o caminho para o arquivo onde os erros do servidor são registrados. ${APACHE_LOG_DIR} é uma variável definida pelo Apache que geralmente aponta para um diretório como /var/log/apache2 ou /var/log/httpd.

CustomLog ${APACHE_LOG_DIR}/access.log combined Especifica o arquivo de log para rastrear o acesso ao servidor com o formato de log combinado. Este formato registra mais informações do que o formato de log comum, incluindo campos como referenciador e agente do usuário.