- Visão Geral do Sistema
- Requisitos do Sistema
- Instalação e Configuração de Ambiente de Produção
- Arquitetura do Sistema
- Funcionalidades
O projeto "Facilita Diário" foi desenvolvido com o objetivo de otimizar o processo de coleta de dados da Superintendência da Imprensa Oficial do Estado de Mato Grosso (IOMAT). A proposta central deste sistema é realizar a captura e armazenamento das publicações dos Diários Oficiais no banco de dados da plataforma, proporcionando, posteriormente, a utilização desses dados em leituras dinâmicas e no envio automatizado de notificações. Essa automação visa garantir maior eficiência no gerenciamento das informações, além de permitir uma consulta ágil e organizada dos registros.
As funcionalidades do sistema incluem o armazenamento dos dados obtidos da IOMAT e sua posterior manipulação conforme necessário. Essa manipulação abrange o envio de notificações por meio de e-mails, bem como a disponibilização de dados através de APIs, permitindo seu uso por sistemas externos.
Servidor:
Cliente:
Servidor:
Cliente:
Banco de Dados #
API:
E-Mail:
-
Linux (Ubuntu, Debian, CentOS, etc.) é preferível em ambientes de produção devido à compatibilidade com Docker e facilidade de configuração de Redis e Memcached.
-
macOS e Windows são viáveis para desenvolvimento local, mas podem exigir algumas otimizações adicionais.
-
CPU: Mínimo de 4 núcleos (quad-core) para execução suave de Docker, Redis, Memcached, e Laravel.
-
Memória RAM: Mínimo de 8 GB. Recomenda-se 16 GB para um ambiente mais responsivo, especialmente ao usar vários containers Docker simultaneamente.
-
Armazenamento: 20-50 GB de espaço livre, dependendo do tamanho da aplicação e dos volumes Docker.
-
Rede: Conexão estável à internet para baixar imagens Docker e atualizar pacotes.
-
CPU: 4-8 núcleos (ou mais, dependendo da carga).
-
Memória RAM: Mínimo de 8 GB, recomendado 16 GB ou mais para grandes aplicações ou muitas conexões simultâneas.
-
Armazenamento: SSD para melhorar o desempenho do banco de dados e leitura/gravação de arquivos. Tamanho depende da quantidade de dados processados, mas comece com 50 GB.
-
Rede: Rede de baixa latência para acesso rápido ao Redis e Memcached.
-
Docker Engine: Versão 20.10 ou superior.
-
Docker Compose: Versão 1.29 ou superior (para orquestrar containers de Laravel, Redis e Memcached).
Note
Certifique-se de que o sistema tem suporte para a execução de contêineres e que as permissões estão configuradas corretamente.
-
Versão: Redis 6 ou superior.
-
Memória: A quantidade de memória necessária para Redis depende de como os dados são armazenados. Para cargas pequenas, 512 MB a 1 GB são suficientes. Para sistemas mais pesados, a memória pode chegar a vários GBs.
-
Porta: Redis opera na porta 6379 por padrão, certifique-se de que essa porta está liberada no firewall.
-
Versão: Memcached 1.5 ou superior.
-
Memória: Memcached é altamente dependente de memória. Mesmo em sistemas pequenos, é recomendável alocar pelo menos 512 MB a 1 GB para caches menores. Para caches grandes, 4-8 GB.
-
Porta: Memcached usa a porta 11211 por padrão.
-
PHP: Versão 8.0 ou superior.
-
Extensões PHP:
pdo_mysql
para o MySQL/MariaDB.redis
para comunicação com Redis.memcached
para comunicação com Memcached.openssl
,mbstring
,tokenizer
,json
,xml
,ctype
,bcmath
, entre outras extensões Laravel requeridas.
-
Banco de dados:
MySQL
,MariaDB
, ouPostgreSQL
.- Memória: Recomenda-se alocar no mínimo 2 GB para o banco de dados em ambientes de desenvolvimento. Produção pode exigir mais, dependendo da carga de dados.
-
Nginx ou Apache: Para servir a aplicação Laravel.
-
Supervisor (para gerenciar jobs e filas no Laravel).
-
Certificados SSL (em produção, para HTTPS).
-
CPU: 4-8 núcleos.
-
RAM: 16 GB ou mais.
-
Armazenamento: SSD com pelo menos 50 GB.
-
Sistema Operacional: Linux (Ubuntu 20.04 LTS ou similar).
git clone https://github.com/Luis-F-Oliveira/fc-server.git
cd fc-server
chmod +x start.sh
sh start.sh
- Copie o exemplo
.env
:
cp .env.example .env
- Modifique as variáveis de ambiente, especialmente:
- Banco de Dados
DB_CONNECTION=
DB_HOST=
DB_PORT=
DB_DATABASE=
DB_USERNAME=
DB_PASSWORD=
- Redis
REDIS_CLIENT=phpredis
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
- Memcached
MEMCACHED_HOST=memcached
MEMCACHED_PORT=11211
- Construindo e Inicializando os Containers
Agora com o .env
configurado e projeto preparado, vamos construir e iniciar os containers Docker.
No diretório raiz do projeto, execute:
docker-compose build
docker-compose up -d
- Gerar
APP_KEY
:
docker-compose exec laravel.prod php artisan key:generate
- Rodando as Migrações
Após inicializar os containers, você precisa rodar as migrações para configurar o banco de dados.
docker-compose exec laravel.prod php artisan migrate
- Configuração dos Containers
O arquivo docker-compose.yml
está configurado para rodar os seguintes serviços:
-
Laravel Service (laravel.prod):
-
Imagem Base:
sail-8.3/app
, construída a partir doDockerfile
no diretóriodocker/8.3
. -
Volumes: Monta o diretório do projeto localmente em
/var/www/html
. -
Portas: 80 para a aplicação Laravel, e 5173 para o Vite (caso esteja usando).
-
Depende: De
redis
ememcached
.
-
-
Redis Service (redis):
-
Imagem Base:
redis:alpine
. -
Volumens: Dados persistentes armazenados em
sail-redis
. -
Porta: 6379 (configurável pelo
.env
). -
Healthcheck: Verifica a saúde do Redis com
redis-cli ping
.
-
-
Memcached Service (memcached):
-
Imagem Base:
memcached:alpine
. -
Porta: 11211 (configurável pelo
.env
).
-
-
Operações CRUD (Criar, Ler, Atualizar e Excluir): Implementação completa das funcionalidades de manipulação de dados, abrangendo a criação, leitura, atualização e exclusão de registros, incluindo informações coletadas e servidores armazenados no sistema.
-
Envio de Notificações Personalizadas: Sistema automatizado para envio de e-mails personalizados aos destinatários, contendo informações processadas de acordo com os dados relevantes.
-
Desativação de Notificações: Inclusão de links dedicados nos e-mails de notificação, permitindo que os destinatários desativem permanentemente o recebimento de futuras notificações, até que optem por reativá-las.