Aqui faremos um POST rápido sobre um assunto que acreditamos que possa acrescentar a vários profissionais, seremos breves e abordaremos de uma maneira também bem simples com o objetivo de agregar o máximo da forma mais rápida.
Migrar uma aplicação Laravel de um servidor para outro pode parecer complicado, especialmente se o novo servidor não possui o Laravel instalado (framework). Este guia mostra como realizar a migração de forma segura e prática, garantindo que a aplicação funcione corretamente sem precisar instalar dependências diretamente no novo servidor.
A ideia é empacotar toda a aplicação no servidor original, transferir os arquivos compactados para o novo servidor, configurar o banco de dados e o servidor web, e ajustar os arquivos de configuração necessários para que a aplicação funcione normalmente.
Observação: Todos os comandos que aparecem destacados em cinza devem ser ajustados conforme o seu ambiente, como nomes de pastas, arquivos, endereços de IP e credenciais.
1. Preparando a aplicação
Antes de transferir sua aplicação, precisamos compactá-la no servidor original. Assim, todos os arquivos necessários serão levados para o novo ambiente de forma organizada. Para isso, entre na pasta da sua aplicação (em nosso exemplo, vamos usar a aplicação meusite.com.br):
cd /var/www/html/meusite.com.br
Para compactar a aplicação, digite:
zip -r meusite.com.br . -x ".git/" "node_modules/" ".env.local"
Após compactar, mova o arquivo zip para /home/usuario/:
mv meusite.com.br.zip /home/usuario/
Utilizando seu cliente FTP, conecte-se ao servidor e transfira o arquivo .zip para seu computador.
2. Preparando o novo servidor
Agora que já temos a aplicação compactada, precisamos configurar o diretório no novo servidor e descompactar os arquivos para que a aplicação esteja pronta para ajustes.
Caso a pasta ainda não exista no novo servidor, crie-a:
mkdir -p /var/www/html/meusite.com.br
Acesse a pasta:
cd meusite.com.br
Utilizando FTP, envie o arquivo compactado meusite.com.br.zip para /home/usuario/ e mova-o para a pasta do projeto:
mv /home/usuario/meusite.com.br.zip /var/www/html/meusite.com.br
Descompacte o arquivo:
unzip meusite.com.br.zip
3. Configurando o Banco de Dados
A aplicação Laravel depende de um banco de dados para funcionar. Nesta etapa, vamos configurar as credenciais no arquivo .env para que o sistema consiga se conectar corretamente ao MySQL.
Altere as configurações de conexão da sua aplicação (em nosso exemplo, um arquivo .env), com as configurações do seu ambiente:
vim .env
No modo de inserção (pressione INSERT), configure:
DB_CONNECTION=mysql
DB_HOST=IPDOSERVIDOR
DB_DATABASE=DATABASEDB
DB_USERNAME=USUARIODB
DB_PASSWORD=SENHA
Salve e saia do arquivo (pressione ESC e digite :wq!).
4. Configurando o Servidor Web
Com os arquivos no lugar e o banco configurado, precisamos ajustar o Apache para que a aplicação seja reconhecida e acessível pelo navegador. Em nosso exemplo vamos usar virtual host, caso queira saber mais sobre isso, ou configurar seu ambiente dessa forma, leia nosso post sobre como Configurar multiplos Websites no Apache. Edite o arquivo de virtual hosts:
vim /etc/httpd/conf.d/vhosts.conf
No modo de inserção (INSERT), adicione:
<VirtualHost *:80>
ServerName meusite.com.br
ServerAlias meusite
ServerAdmin admin@meusite.com
DocumentRoot /var/www/html/meusite.com.br/public
ErrorLog "/var/log/httpd/meusite.com.br-error.log"
CustomLog "/var/log/httpd/meusite.com.br-requests.log" combined
</VirtualHost>
<Directory "/var/www/html/meusite.com.br/">
AllowOverride All
Require all granted
</Directory>
Salve e saia do arquivo (ESC e :wq!). Agora crie os arquivos de log:
touch /var/log/httpd/meusite.com.br-requests.log
touch /var/log/httpd/meusite.com.br-error.log
Por fim, depois de ajustar tudo, basta reiniciar o Apache para que as novas configurações entrem em vigor e sua aplicação esteja disponível. Para finalizar, reinicie o Apache:
systemctl restart httpd.service
5. Limpando configurações do Laravel
Ao migrar de servidor, algumas configurações ficam armazenadas em cache. Por isso, é necessário limpá-las para evitar erros e garantir que o Laravel reconheça corretamente o novo ambiente. Na pasta do projeto, execute:
php artisan config:clear
php artisan route:clear
php artisan view:clear
6. Configurações de Sessões
O Laravel utiliza sessões para gerenciar usuários e navegação. Dependendo do ambiente, você pode optar por gravar as sessões no banco ou em arquivos locais. Aqui apresentamos três opções para configurar isso corretamente.
Opção 1 – Criar a tabela via Artisan
Dentro da pasta do projeto execute os comandos:
php artisan session:table
php artisan migrate
Opção 2 – Usar sessões em arquivos
Edite o arquivo .env.
vim /var/wwww/html/meusite.com.br/.env
No modo de inserção (INSERT), altere:
SESSION_DRIVER=file
Salve e saia (ESC + :wq!)
Garanta permissões:
chmod -R 775 storage/framework/sessions
Opção 3 – Criar tabelas manualmente no banco
Acesse o MySQL:
mysql -u usuario -p
USE database;
Crie a tabela migrations:
CREATE TABLE IF NOT EXISTS `migrations` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`migration` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`batch` int NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Crie a tabela sessions:
CREATE TABLE IF NOT EXISTS `sessions` (
`id` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
`user_id` bigint unsigned DEFAULT NULL,
`ip_address` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`user_agent` text COLLATE utf8mb4_unicode_ci,
`payload` longtext COLLATE utf8mb4_unicode_ci NOT NULL,
`last_activity` int NOT NULL,
PRIMARY KEY (`id`),
KEY `sessions_user_id_index` (`user_id`),
KEY `sessions_last_activity_index` (`last_activity`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Inserindo registro na tabela migrations para marcar que a migration já foi aplicada:
INSERT INTO `migrations` (`migration`, `batch`) VALUES ('2025_08_19_000000_create_sessions_table', 1);
Saia do MySQL:
EXIT
A aplicação agora deve estar funcionando no novo servidor, sem necessidade de instalação do Laravel.
Fontes/Referências
NVLAN – Configurar multiplos Websites no Apache
https://laravel.io/forum/05-13-2014-do-i-need-laravel-framework-composer-in-production
Mais Informações
Esperamos ter te ajudado e estaremos sempre a disposição para mais informações.
Se você tem interesse em algum assunto específico, tem alguma dúvida, precisa de ajuda, ou quer sugerir um post, entre em contato conosco pelo e-mail equipe@nvlan.com.br.
