Open Antonio214 opened 4 months ago
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
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.
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