Files
Investidor-V2/deploy/linux/README.md
T
nala 250ac35fd1
tests / ci (push) Canceled after 0s
first commit
2026-09-28 10:01:09 +02:00

4.6 KiB

investemoz.tempo.co.mz — instalação Linux

Modelos para Linux com systemd, Nginx e PHP-FPM. Caminho assumido: /var/www/investemoz; utilizador web www-data; PHP 8.5. Confirmar distribuição, binário e socket antes de aplicar (não se assume que os pacotes estejam instalados). Nenhum destes ficheiros foi aplicado remotamente. O .env local fica intacto.

1. Preparar o servidor

Instalar Nginx, PHP CLI/FPM compatível com composer.lock e extensões exigidas por composer check-platform-reqs --no-dev, incluindo pdo_pgsql, mbstring, xml, curl e intl. Instalar PostgreSQL/PostGIS ou provisionar uma instância externa. Usar o gestor de pacotes e versões suportados pela distribuição escolhida. Verificar php -v, php -m, nginx -v e o socket em /run/php/.

Apontar o registo DNS A de investemoz.tempo.co.mz para o IP do servidor. Publicar AAAA apenas se IPv6 estiver configurado (os modelos fornecidos escutam IPv4). Permitir HTTPS/HTTP e o acesso administrativo necessário no firewall. Não expor PostgreSQL publicamente por defeito.

Publicar o projecto em /var/www/investemoz, excluindo .env local, public/hot, node_modules e dados locais de storage. Preservar storage nas actualizações. O código pertence ao utilizador de implantação; www-data só necessita de escrita em storage e bootstrap/cache. O .env deve ser legível pelo PHP, sem acesso público nem permissões globais (por exemplo proprietário de implantação, grupo www-data, 0640).

2. Aplicação e base de dados

Usar production.env.example como ponto de partida apenas numa instalação nova. Preencher os segredos no servidor e criar base/utilizadores com privilégios revistos. Provisionar PostGIS com a conta administrativa. Seguir o guia de publicação para dependências, build, APP_KEY, migrations e backups. Não sobrescrever APP_KEY nem .env numa actualização. Manter configurações de migração e execução separadas.

O build precisa de PHP para gerar as rotas Wayfinder. Não copiar vendor gerado para Windows sem reinstalar/verificar dependências na plataforma de destino. Não activar notificações até validar o correio. MAIL_MAILER=log é provisório: não entrega verificações de conta; os logs podem conter ligações sensíveis.

3. Certificado e Nginx

Instalar Certbot pelo método indicado para a distribuição. Criar /var/www/letsencrypt e instalar nginx-http.conf como o virtual host deste domínio. Em Debian/Ubuntu pode usar sites-available/sites-enabled; noutras distribuições usar o directório incluído pelo nginx.conf. Não activar ambos os modelos ao mesmo tempo.

sudo nginx -t
sudo systemctl reload nginx
sudo certbot certonly --webroot -w /var/www/letsencrypt -d investemoz.tempo.co.mz

Depois de existir o certificado, substituir o virtual host pelo nginx-https.conf, ajustando o socket fastcgi_pass. Validar com nginx -t antes de recarregar. Confirmar o mecanismo de renovação do Certbot e configurar um deploy hook que execute systemctl reload nginx após cada renovação bem sucedida. Testar renovação com sudo certbot renew --dry-run. Não activar o modelo HTTPS antes do certificado.

4. Fila

Rever utilizador, caminhos e PHP em investemoz-queue.service. Instalar a unidade em /etc/systemd/system/investemoz-queue.service e executar:

sudo systemd-analyze verify /etc/systemd/system/investemoz-queue.service
sudo systemctl daemon-reload
sudo systemctl enable --now investemoz-queue
sudo systemctl status investemoz-queue
sudo journalctl -u investemoz-queue -n 50

O serviço lê o .env pelo Laravel, não por EnvironmentFile. Recarregar config e executar php artisan queue:restart após alterações. Não executar outro supervisor para este mesmo worker. Configurar rotação de logs Laravel e monitorização de jobs falhados e espaço em disco; a aplicação não remove o histórico de auditoria.

5. Verificação final

cd /var/www/investemoz
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan portal:readiness
curl --fail https://investemoz.tempo.co.mz/up
curl --fail https://investemoz.tempo.co.mz/api/v1/home

Confirmar redireccionamento HTTP, certificado, página inicial, ficheiro estático, ligação directa de oportunidade e login. /acesso-gestao permite configurar a conta mais tarde. Readiness continuará a indicar correio pendente enquanto usar log. Testar restauração de backup numa instância separada antes de colocar dados reais.

Referências: Nginx try_files, systemd.service.