# Arquitetura do projeto site C3SL ## Componentes: - VM - Strapi - Hugo - Nginx (Hugo e Strapi) - Postgresql - Systemd - DNS - CNAME strapi.c3sl.ufpr.br - CNAME cms.c3sl.ufpr.br ### VM CMS (Máquina virtual) É um ambiente/servidor, o qual possui as aplicações que queremos executar e disponibilizá-las para acesso externo. ### Strapi: Strapi é o CMS (Serviço de gerenciamento de conteúdo), o qual usamos para comunicar com o site baseado no framework Hugo por meio de uma interface gráfica. O objetivo é usá-lo para facilitar o serviço do time de comunicação ao postarem notícias no site do C3SL. Internamente, o strapi possui uma configuração de lifecycles, o qual é possivel executar ações conforme algum tipo de evento acontece (publicar/deletar uma notícia). Uma dessas ações é transformar o conteúdo da notícia em um arquivo markdown que será salvo dentro do diretório de conteúdos do Hugo (content/). O strapi é servido pela porta 1337 da máquina virtual. ### Hugo É um framework de gerador de sites estáticos. O funcionamento dele é baseado pela existência de algum tema qualquer. Hugo possui um arquivo de configuração com a extensão .yml, onde possui algumas configurações gerais do site, bem como, é possível ter outras informação e apenas "referenciar" nos arquivos html/css. Ele é servido na porta 1313 da máquina virtual. ### NGINX O nginx é um software que utilizamos para hospedar ambos os sites (Strapi e C3SL). Com ele é possível balancear as cargas de acesso e usá-lo como proxy reverso, o que significa que o nginx ficará entre o servidor e o cliente. Possuímos um arquivo de configuração para cada site (Strapi e C3SL). Nesses arquivos direcionamos as rotas http para https; validamos o site por meio de um certificado digital, que faz uma ponte criptografada, além de informar como o NGINX vai administrar as solicitações de acesso às URL's. ### Postgresql É o banco de dados, o qual iremos utilizar juntamente com o Strapi. Nele serão armazenada as informações, como: noticias, autores, projetos, etc. ### DNS O DNS serve para resolver os nomes de domínio para os endereços IP que o servidor NGINX usa, garantindo que o cliente consiga acessar o site. ### CNAME's Um registro CNAME é um elemento de informação de um DNS (_Domain Name System_). Os registros CNAME normalmente são usados para mapear um subdomínio como _www_ ou _mail_ ao domínio que hospeda o conteúdo desse subdomínio. Usamos o CNAME para mapear domínios. No projeto do site do C3SL, utilizaremos os seguintes: **Strapi**: strapi.c3sl.ufpr.br **Site do C3SL**: cms.c3sl.ufpr.br ### Systemd O systemd é um gerenciador de tarefas de serviços controlado pelo kernel do sistema operacional. Ele faz com que softwares sejam executados em segundo plano, como serviços (chamados de Daemon). Podemos controlá-los por meio de comandos do `systemctl` Por exemplo: systemctl status <nome_do_serviço> systemctl start <nome_do_serviço> systemctl stop <nome_do_serviço> Para verificar os *log's* do strapi, podemos utilizar o comando `sudo journalctl -xefu strapi` ### Imagem da arquitetura CMS 