
📋 Requisitos
Para conseguir prosseguir com sucesso no tutorial, é fundamental que você conheça minimamente sobre:
- Sistema de arquivos Linux
- Desenvolvimento Web
- PHP
- Laravel
Além disso precisará de acesso SSH à hospedagem para criação dos links simbólicos, os quais não podem ser criados via Gerenciador de Arquivos do cPanel.
🌱 Criando o projeto
Primeiramente, crie um projeto em Laravel em seu ambiente de desenvolvimento (normalmente o seu computador local), com o código abaixo.
composer create-project laravel/laravel example-app
Com o projeto criado, você deverá ter uma estrutura de pastas semelhante a esta:

Você também consegue executar o servidor de desenvolvimento, na raiz do projeto, para se certificar de que está funcionando normalmente, através do comando:
php artisan serve
Se tudo ocorreu bem, a página padrão do framework deverá aparecer em http://localhost:8000

🔨 Compilando
Agora com o projeto instalado e funcional, podemos entender melhor a parte da compilação ou “build”. Esta fase do projeto consiste em prepararmos o projeto para que opere da forma mais eficiente possível para um ambiente de produção.
No caso do Laravel, precisamos antes instalar somente as dependências de produção, excluindo as dependências de desenvolvimento, com o comando abaixo:
composer install --optimize-autoloader --no-dev
Feita a instalação das dependências de produção, agora podemos fazer a compactação do projeto e subir o arquivo para hospedagem.
🚀 Publicação
Agora, com o site gerado podemos prosseguir para a parte de publicação para o site ficar acessível publicamente em seu domínio!
Existem diversas formas de fazer o deploy. Focaremos na forma manual para que você entenda os fundamentos e saiba o que é necessário para automatizar este fluxo caso desejar.
Primeiramente, pensando na segurança das variáveis de ambiente que são carregadas pelo framework, precisamos manter o projeto fora de public_html, portanto, neste exemplo aqui, foi optado por criar uma pasta sites no diretório home (/home/user) do usuário, onde nesta pasta ficarão todos os projetos desenvolvidos em Laravel.

Criado o diretório, agora podemos criar os links simbólicos que apontarão para os arquivos de entrada do site, no caso da estrutura do Laravel, estes ficam dentro do diretório public na raiz do projeto. Para criá-los foi aberto o terminal, entrado no diretório sites e executado os comandos abaixo:
ln -s ./example-app/public/index.php index.php
ln -s ./example-app/public/favicon.ico favicon.ico
ln -s ./example-app/public/robots.txt robots.txt
Estes links simbólicos serão criados em public_html (levando em conta que estaremos fazendo para o site principal e que o nome do projeto é example-app) e estarão apontando para seus respectivos nomes dentro do projeto ficando da seguinte forma:

Criados os links, poderemos fazer o upload do projeto em sites.
Para fazermos o upload do projeto, precisarás antes compactar o diretório do projeto. Neste caso será usado o próprio gerenciador de arquivos do Windows para facilitar o entendimento, mas também poderia ser utilizado o terminal para isso.

Feita a compressão, abra o diretório sites, que foi criado no passo anterior, e faça o upload do arquivo e logo em seguida a sua extração, no mesmo local. No final, o diretório deverá ficar dessa forma (também poderá remover o arquivo compactado se desejar):

Agora com o projeto na hospedagem, abra um terminal e abra o diretório do projeto dentro de sites, e execute o comando de otimização para criar o cache dos arquivos para deixar o projeto mais performático.
php artisan optimize

Por último, faça a movimentação do arquivo .htaccess que está no diretório public do seu projeto laravel, para o diretório raiz que é apontado pelo domínio (no mesmo lugar onde estão os link simbólicos criados anteriormente), no final ao conferir o diretório raiz do domínio você terá estes arquivos.

E finalmente você poderá abrir o site e ver o projeto em Laravel sendo executado em produção. 🚀

Disclaimer: todos os comandos utilizados neste tutorial foram utilizados com base em versões específicas da documentação oficial das tecnologias utilizadas (PHP 8.1, Composer 2.7.7, Laravel v10), portanto, consulte a documentação oficial para ter as informações mais atualizadas.