Capítulo 1 de 9

Tutorial Laravel 13 #1: instalar e configurar o projeto

verificado a 2 Setembro 2026 · 6 min

Resposta rápida

Instala o Laravel 13 com composer create-project laravel/laravel blog e depois lança o php artisan serve. O comando cria o ficheiro .env, gera a chave de aplicação e executa as migrações sozinho. O Laravel 13 exige PHP 8.3 no mínimo e usa SQLite por omissão.

No fim deste capítulo, terás um projeto Laravel 13 instalado, configurado em SQLite, e a página de boas-vindas aparecerá no teu navegador.

Este primeiro capítulo instala o Laravel 13, explica para que serve cada pasta do projeto e arranca o servidor de desenvolvimento. No fim, a página de boas-vindas do Laravel aparece no teu navegador.

Do que precisas

O Laravel 13 exige PHP 8.3 no mínimo e aceita PHP 8.3, 8.4 e 8.5. Verifica a tua versão:

bash
php -v

Só conta a primeira linha. Tem de anunciar PHP 8.3, 8.4 ou 8.5:

code
PHP 8.4.25 (cli) (built: Aug 27 2026 20:19:39) (NTS)

Se o comando não existir ou devolver uma versão mais antiga, instala o PHP. No Windows, o WampServer ou o Laragon, no macOS, o Homebrew com brew install php, no Linux, o pacote php-cli da tua distribuição.

Precisas também do Composer, o gestor de dependências do PHP. É ele que descarrega o Laravel e tudo aquilo de que depende.

bash
composer --version

Extensões PHP

O Laravel precisa de algumas extensões PHP. A maioria das instalações já as traz. Duas merecem uma verificação, porque a sua ausência só bloqueia mais tarde:

bash
php -m | grep -E "pdo_sqlite|intl"

O pdo_sqlite serve para a base de dados deste tutorial. A intl vai ser exigida no capítulo 4 pelo painel de administração, instalá-la agora evita uma instalação falhada nessa altura.

Um editor

O VS Code é gratuito e chega perfeitamente, com a extensão «PHP Intelephense». O PhpStorm é pago e percebe o Laravel de raiz. O tutorial não pressupõe nenhum: tudo se faz no terminal.

Criar o projeto

Coloca-te na pasta onde arrumas os teus projetos e depois:

bash
composer create-project laravel/laravel blog

O Composer descarrega o Laravel e as suas dependências para uma pasta blog. A operação demora de um a três minutos, conforme a tua ligação.

O que o comando faz sozinho

Desde o Laravel 11, o create-project já não se limita a descarregar os ficheiros. Copia o .env.example para .env, gera a chave de aplicação, cria o ficheiro database/database.sqlite e executa as migrações iniciais. Os comandos php artisan key:generate e php artisan migrate que encontras nos tutoriais antigos deixaram de ser necessários num projeto novo.

Verifica a versão instalada:

bash
cd blog
php artisan --version
code
Laravel Framework 13.30.1

A alternativa: o instalador do Laravel

Existe um instalador global que encurta o comando e propõe escolher um kit de arranque:

bash
composer global require laravel/installer
laravel new blog

É prático se crias projetos com frequência, mas acrescenta uma dependência global à tua máquina e às vezes levanta um problema de PATH. Se obtiveres laravel: command not found, o artigo corrigir «laravel: command not found» explica a solução. Para este tutorial, o composer create-project chega e evita este desvio.

A árvore do projeto

Eis o que contém a pasta blog. O esqueleto do Laravel aligeirou-se bastante desde o Laravel 8: vários ficheiros descritos pelos tutoriais antigos já não existem.

Na raiz

app

O código da tua aplicação. Acabado de instalar, só contém três ficheiros: um controlador de base, o modelo User e um service provider. É aqui que vais acrescentar os teus controladores e os teus modelos.

bootstrap

O ficheiro bootstrap/app.php é o ponto de configuração da aplicação: é aí que se declaram as rotas, os middleware e o tratamento dos erros. No Laravel 8 e 9, esse papel estava repartido por app/Http/Kernel.php, app/Console/Kernel.php e app/Exceptions/Handler.php, que desapareceram.

config

Os ficheiros de configuração. O Laravel 13 só publica dez por omissão, contra cerca de vinte outrora: os restantes continuam a existir na framework com os seus valores por omissão. Para recuperares um e o modificares, usa o php artisan config:publish.

database

As migrações (a estrutura das tabelas), os seeders (os dados de partida) e as factories (objetos de teste). É também aí que está o database.sqlite, a tua base de dados.

public

A única pasta que o servidor web deve expor. Contém o index.php, o ponto de entrada de todos os pedidos, e os ficheiros compilados pelo Vite.

resources

As views Blade, as folhas de estilo CSS e os ficheiros JavaScript antes da compilação.

routes

As declarações de endereços. O Laravel 13 só cria dois ficheiros, o web.php e o console.php. Os ficheiros api.php e channels.php descritos pelos tutoriais escritos para o Laravel 8 já não são criados de origem: o php artisan install:api e o php artisan install:broadcasting acrescentam-nos se precisares deles. Este tutorial só usa o web.php.

Dentro da pasta app

Http/Controllers

Os controladores: o código que recebe um pedido, vai buscar os dados e escolhe a view a devolver.

Models

Os modelos Eloquent. Cada tabela da base tem um modelo correspondente, que serve para a ler e para a escrever. Esta pasta existe desde o Laravel 8, nas versões anteriores, os modelos ficavam diretamente em app.

Configurar o projeto

Toda a configuração que depende da máquina vive no ficheiro .env, na raiz. Os ficheiros de config leem-no através da função env(). Este ficheiro nunca deve ser versionado: contém as tuas palavras-passe.

O nome e o endereço do site

.env
APP_NAME="Mon blog"
APP_URL=http://localhost:8000

O APP_NAME vai aparecer no título das páginas. O APP_URL serve para construir as ligações absolutas, nomeadamente para as imagens carregadas.

A base de dados

O Laravel 13 usa SQLite por omissão:

.env
DB_CONNECTION=sqlite

O SQLite arruma toda a base num único ficheiro, o database/database.sqlite. Não há servidor para arrancar, nem utilizador para criar, nem palavra-passe para decorar. Para aprender, é a melhor escolha: apagas o ficheiro e recomeças do zero.

Se preferires MySQL ou MariaDB, cria a base e substitui estas linhas:

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=

O tutorial funciona com as duas. Uma diferença de comportamento aparece no capítulo 8, sobre o motor de pesquisa: é aí medida e explicada.

A ligação de armazenamento

Os ficheiros carregados a partir do back-office aterram em storage/app/public, que não é acessível pela web. Este comando cria a ligação simbólica que os torna visíveis:

bash
php artisan storage:link
code
INFO  The [public/storage] link has been connected to [storage/app/public].

Arrancar o servidor

bash
php artisan serve
code
  INFO  Server running on [http://127.0.0.1:8000].

  Press Ctrl+C to stop the server

Abre o http://127.0.0.1:8000. A página de boas-vindas do Laravel aparece. Deixa este terminal aberto: o servidor corre enquanto não o parares.

Se a porta 8000 já estiver ocupada, o Laravel não pára: tenta a seguinte e avisa-te. Lê o endereço apresentado em vez de o adivinhares.

code
  Failed to listen on 127.0.0.1:8000 (reason: Address already in use)

   INFO  Server running on [http://127.0.0.1:8001].

Também podes servir o projeto com Apache, Nginx, Docker ou Laravel Herd. Nesse caso, a raiz do servidor tem de apontar para a pasta public, nunca para a raiz do projeto: expor a raiz tornaria o teu ficheiro .env descarregável.

Verificar a instalação

Este comando resume o estado do projeto e confirma que está tudo no sítio:

bash
php artisan about
code
Environment ........................................................
Application Name .......................................... Mon blog
Laravel Version ........................................... 13.30.1
PHP Version ................................................ 8.4.25
Composer Version ........................................... 2.10.3
Environment ................................................. local
Debug Mode ................................................ ENABLED

Drivers ...........................................................
Cache .................................................... database
Database ................................................... sqlite
Queue .................................................... database
Session .................................................. database

O projeto está pronto. O índice da série recorda o que cada capítulo traz. O capítulo seguinte explica como associar um endereço ao teu próprio código.

Erros frequentes

A porta 8000 já está ocupada O php artisan serve não pára: passa para a 8001 e anuncia-o. Lê o endereço apresentado em vez de o adivinhares.
Falta a extensão intl Não é necessária já, mas o painel de administração do capítulo 4 exige-a. Instalá-la agora evita uma falha do composer mais tarde.
A raiz do servidor aponta para o projeto O Apache ou o Nginx têm de servir a pasta public, nunca a raiz: caso contrário o ficheiro .env fica descarregável.
os ficheiros api.php e channels.php não existem É normal desde o Laravel 11. O php artisan install:api e o install:broadcasting criam-nos se for preciso.
Newsletter

Os novos testes, tutoriais e projetos, por e-mail.

Testes reproduzíveis, código versionado, resultados datados. Nunca spam.