source_url | revision | status |
---|---|---|
2a9cd61538f0b9d340d11f178129b090a183bcbd |
ready |
- Introdução
- Requisitos do Servidor
- Configuração do Servidor
- Otimização
- Modo de Depuração
- A Rota de Integridade
- Implantação Fácil com Forge/Vapor
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.
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
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;
}
}
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.
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
.
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çãoenv
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çãoenv
para variáveis.env
retornarãonull
.
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
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.
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.
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 comotrue
em produção, você corre o risco de expor valores de configuração confidenciais às pessoas usuárias da sua aplicação.
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.
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.
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.