O deploy de uma aplicação Laravel exige algumas configurações essenciais para garantir segurança, desempenho e estabilidade. Neste artigo, você aprenderá a maneira correta de colocar sua aplicação Laravel em produção, seguindo as melhores práticas.
1. Escolha o Ambiente de Hospedagem
Antes de realizar o deploy, escolha um ambiente adequado para sua aplicação. Algumas opções populares incluem:
- VPS/Dedicado: DigitalOcean, Linode, AWS, Vultr
- PaaS (Plataforma como Serviço): Heroku, Laravel Forge, Ploi
- Hospedagem Compartilhada: Opção menos recomendada, mas pode ser usada para projetos pequenos
Caso esteja utilizando uma VPS, instale um servidor web como Nginx ou Apache e configure um banco de dados (MySQL, PostgreSQL, etc.).
2. Configurando o Servidor para Laravel
Para configurar corretamente o ambiente, siga estes passos:
Instale os Pré-requisitos
Execute os seguintes comandos para instalar PHP, Composer, MySQL e Nginx:
sudo apt update && sudo apt install -y php-cli php-mbstring php-xml unzip curl mysql-server nginx
Crie um Usuário para o Deploy
sudo adduser deploy
sudo usermod -aG www-data deploy
Isso melhora a segurança e evita o uso do usuário root.
3. Subindo a Aplicação no Servidor
Depois de preparar o ambiente, faça upload do código via Git ou SFTP:
Clone o Repositório
git clone https://github.com/seu-repositorio.git /var/www/seu-projeto
Acesse a pasta do projeto e instale as dependências:
cd /var/www/seu-projeto
composer install --no-dev --optimize-autoloader
Crie o arquivo .env e configure as variáveis do ambiente:
cp .env.example .env
php artisan key:generate
4. Configuração do Servidor Web (Nginx)
Para que o Nginx sirva corretamente sua aplicação Laravel, crie um arquivo de configuração:
sudo nano /etc/nginx/sites-available/seu-projeto
Adicione o seguinte conteúdo:
server {
listen 80;
server_name seu-dominio.com;
root /var/www/seu-projeto/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Habilite a configuração e reinicie o Nginx:
sudo ln -s /etc/nginx/sites-available/seu-projeto /etc/nginx/sites-enabled/
sudo systemctl restart nginx
5. Configuração de Permissões
Garanta que o Laravel possa acessar os diretórios necessários:
sudo chown -R www-data:www-data /var/www/seu-projeto
sudo chmod -R 775 /var/www/seu-projeto/storage /var/www/seu-projeto/bootstrap/cache
6. Otimizando a Aplicação para Produção
Antes de finalizar o deploy, aplique as otimizações:
Cache de Configuração e Rotas
php artisan config:cache
php artisan route:cache
php artisan view:cache
Rodando Migrations e Seeders
Se a aplicação usa banco de dados, execute:
php artisan migrate --force
php artisan db:seed --force
7. Configuração do Supervisor para Filas e Jobs
Se sua aplicação usa filas (queues), configure o Supervisor para manter os processos ativos:
Instale o Supervisor:
sudo apt install supervisor
Crie um arquivo de configuração:
sudo nano /etc/supervisor/conf.d/laravel-worker.conf
Adicione o seguinte conteúdo:
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/seu-projeto/artisan queue:work --tries=3
autostart=true
autorestart=true
numprocs=1
user=www-data
redirect_stderr=true
stdout_logfile=/var/log/laravel-worker.log
Reinicie o Supervisor:
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start laravel-worker:*
8. Configuração de SSL com Let’s Encrypt
Para habilitar HTTPS gratuitamente, instale o Certbot:
sudo apt install certbot python3-certbot-nginx
E gere o certificado:
sudo certbot --nginx -d seu-dominio.com -d www.seu-dominio.com
Configure a renovação automática:
sudo certbot renew --dry-run
9. Automatizando Deploy com GitHub Actions (Opcional)
Se quiser automação no deploy, utilize GitHub Actions para fazer o deploy automaticamente após cada push.
Crie um arquivo .github/workflows/deploy.yml
com o seguinte conteúdo:
name: Deploy Laravel
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Acessar Servidor via SSH
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_KEY }}
script: |
cd /var/www/seu-projeto
git pull origin main
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan queue:restart
sudo systemctl restart nginx
Isso automatiza a atualização do código no servidor ao fazer push
no repositório.
Conclusão
Agora sua aplicação Laravel está pronta para produção, com segurança e desempenho otimizados. 🚀
✅ Dica Extra: Use ferramentas como Laravel Forge ou Envoyer para simplificar ainda mais o processo de deploy.
👉 E você, como costuma fazer o deploy do Laravel? Compartilhe suas experiências nos comentários!