Skip to content

Latest commit

 

History

History
283 lines (221 loc) · 10 KB

implantacao.md

File metadata and controls

283 lines (221 loc) · 10 KB
source_url revision status
2a9cd61538f0b9d340d11f178129b090a183bcbd
ready

Implantação

Introdução

Quando sua aplicação Laravel estiver pronta para ser implantada em produção, há algumas coisas importantes que você pode fazer para garantir que ela seja executada da maneira mais eficiente possível. Neste documento, abordaremos alguns excelentes pontos de partida para garantir que sua aplicação Laravel seja implantada corretamente.

Requisitos do Servidor

O framework Laravel possui alguns requisitos de sistema. Você deve garantir que seu servidor web tenha a seguinte versão mínima e extensões do PHP:

  • PHP >= 8.2
  • Extensão Ctype
  • Extensão cURL
  • Extensão DOM
  • Extensão Fileinfo
  • Extensão Filter
  • Extensão Hash
  • Extensão Mbstring
  • Extensão OpenSSL
  • Extensão PCRE
  • Extensão PDO
  • Extensão Session
  • Extensão Tokenizer
  • Extensão XML

Configuração do Servidor

Nginx

Se você estiver implantando sua aplicação em um servidor que esteja executando o Nginx, poderá usar o seguinte arquivo de configuração como ponto de partida para configurar seu servidor web. Muito provavelmente, este arquivo precisará ser personalizado dependendo da configuração do seu servidor. Se você quiser assistência no gerenciamento de seu servidor, considere usar um serviço de gerenciamento e implantação de servidor do Laravel, como o Laravel Forge.

Certifique-se, como na configuração abaixo, de que seu servidor web direciona todas as requisições para o arquivo public/index.php da sua aplicação. Você nunca deve tentar mover o arquivo index.php para a raiz do seu projeto, pois servir a aplicação a partir da raiz do projeto exporá muitos arquivos de configuração confidenciais à internet pública:

server {
    listen 80;
    listen [::]:80;
    server_name example.com;
    root /srv/example.com/public;

    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    error_page 404 /index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.(?!well-known).* {
        deny all;
    }
}

FrankenPHP

O FrankenPHP também pode ser usado para servir suas aplicações Laravel. O FrankenPHP é um servidor de aplicações PHP moderno escrito em Go. Para servir uma aplicação Laravel PHP usando FrankenPHP, você pode simplesmente invocar o comando php-server:

frankenphp php-server -r public/

Para aproveitar os recursos mais poderosos suportados pelo FrankenPHP, como a integração com o Laravel Octane, HTTP/3, compressão moderna ou a capacidade de empacotar aplicações Laravel como binários independentes, consulte a documentação do Laravel do FrankenPHP.

Otimização

Ao implantar sua aplicação em produção, há vários arquivos que devem ser armazenados em cache, incluindo configurações, eventos, rotas e visualizações. O Laravel fornece um único e conveniente comando optimize do Artisan que irá armazenar em cache todos esses arquivos. Este comando normalmente deve ser invocado como parte do processo de implantação da sua aplicação:

php artisan optimize

O comando optimize:clear pode ser usado para remover todos os arquivos de cache gerados pelo comando optimize:

php artisan optimize:clear

Na documentação a seguir, discutiremos cada um dos comandos de otimização granular executados pelo comando optimize.

Armazenando Configurações em Cache

Ao implantar sua aplicação em produção, você deve se certificar de executar o comando config:cache do Artisan durante o processo de implantação:

php artisan config:cache

Este comando combinará todos os arquivos de configuração do Laravel em um único arquivo em cache, o que reduz bastante o número de viagens que o framework deve fazer ao sistema de arquivos ao carregar seus valores de configuração.

Aviso: Se você executar o comando config:cache durante o processo de implantação, certifique-se de estar chamando a função env apenas de dentro dos seus arquivos de configuração. Depois que a configuração for armazenada em cache, o arquivo .env não será carregado e todas as chamadas à função env para variáveis .env retornarão null.

Armazenando Eventos em Cache

Durante a implantação você deve armazenar em cache os mapeamentos de eventos para ouvintes descobertos automaticamente na sua aplicação. Isso pode ser feito invocando o comando event:cache do Artisan:

php artisan event:cache

Armazenando Rotas em Cache

Se você estiver construindo uma aplicação grande com muitas rotas, certifique-se de executar o comando route:cache do Artisan durante o processo de implantação:

php artisan route:cache

Este comando reduz todos os seus registros de rota a uma única chamada de método em um arquivo em cache, melhorando o desempenho do registro de rota ao registrar centenas de rotas.

Armazenando Visualizações em Cache

Ao implantar sua aplicação em produção, você deve certificar-se de executar o comando view:cache do Artisan durante o processo de implantação:

php artisan view:cache

Este comando pré-compila todas as visualizações do Blade para não serem compiladas sob demanda, melhorando o desempenho de cada requisição que retorna uma visualização.

Modo de Depuração

A opção debug no arquivo de configuração config/app.php determina quanta informação sobre um erro será exibida à pessoa usuária. Por padrão, esta opção é definida para respeitar o valor da variável de ambiente APP_DEBUG, que está armazenada no arquivo .env da sua aplicação.

Aviso: No seu ambiente de produção, esse valor deve ser sempre false. Se a variável for definida como true em produção, você corre o risco de expor valores de configuração confidenciais às pessoas usuárias da sua aplicação.

A Rota de Integridade

O Laravel inclui uma rota integrada de verificação de saúde que pode ser usada para monitorar o status da sua aplicação. Em produção, essa rota pode ser usada para reportar o status da sua aplicação a um monitor de tempo de atividade, balanceador de carga ou sistema de orquestração, como o Kubernetes.

Por padrão, a rota de verificação de integridade é servida em /up e retornará uma resposta HTTP 200 se a aplicação tiver sido inicializada sem exceções. Caso contrário, uma resposta HTTP 500 será retornada. Você pode configurar o URI para esta rota no arquivo bootstrap/app.php da sua aplicação:

->withRouting(
    web: __DIR__.'/../routes/web.php',
    commands: __DIR__.'/../routes/console.php',
-    health: '/up',
+    health: '/status',
)

Quando requisições HTTP forem feitas a esta rota, o Laravel também despachará um evento Illuminate\Foundation\Events\DiagnosingHealth, permitindo que você execute verificações de saúde adicionais relevantes para sua aplicação. Em um ouvinte para este evento, você pode verificar o banco de dados ou o status do cache da sua aplicação. Se você detectar um problema com a sua aplicação, poderá simplesmente lançar uma exceção a partir do ouvinte.

Implantação Fácil com Forge/Vapor

Laravel Forge

Se você ainda não consegue gerenciar a configuração do seu próprio servidor ou não se sente confortável em configurar todos os vários serviços necessários para executar uma aplicação Laravel robusta, o Laravel Forge é uma alternativa maravilhosa.

O Laravel Forge pode criar servidores em vários provedores de infraestrutura, como DigitalOcean, Linode, AWS e muito mais. Além disso, o Forge instala e gerencia todas as ferramentas necessárias para construir aplicações Laravel robustas, como Nginx, MySQL, Redis, Memcached, Beanstalk e muito mais.

Nota: Quer um guia completo para implantação com o Laravel Forge? Confira o Laravel Bootcamp e a série de vídeos sobre o Forge disponível no Laracasts.

Laravel Vapor

Se você deseja uma plataforma de implantação totalmente sem servidor e com escalonamento automático ajustada para o Laravel, dê uma olhada no Laravel Vapor. O Laravel Vapor é uma plataforma de implantação serverless para Laravel, mantida pela AWS. Lance sua infraestrutura Laravel no Vapor e apaixone-se pela simplicidade escalável do serverless. O Laravel Vapor foi ajustado pelos criadores do Laravel para funcionar perfeitamente com o framework, para que você possa continuar escrevendo suas aplicações Laravel exatamente como você costuma fazer.