> ## Documentation Index
> Fetch the complete documentation index at: https://docs.saninternet.com/llms.txt
> Use this file to discover all available pages before exploring further.

# cPanel & NextJS

> Neste tutorial você conhecerá uma abordagem de como fazer a publicação do seu projeto Next.js utilizando o cPanel.

<img src="https://mintcdn.com/san-internet/sXr9tLnaLYaLg1XK/wp-content/uploads/2024/06/next-cpanel-san.png?fit=max&auto=format&n=sXr9tLnaLYaLg1XK&q=85&s=5d0e9b5252f7d600bbc6028658ba2bda" alt="cPanel + NextJs" fetchPriority="high" width="681" height="184" data-path="wp-content/uploads/2024/06/next-cpanel-san.png" />

## 🌱 Criando o projeto

Primeiramente, crie um projeto em Next.js em seu ambiente de desenvolvimento (normalmente o seu computador local), com o código abaixo.

```
npx create-next-app@latest
```

Com o projeto criado, você deverá ter uma estrutura de pastas semelhante à esta:

<img src="https://mintcdn.com/san-internet/sXr9tLnaLYaLg1XK/wp-content/uploads/2024/06/next-estrutura-pastas-1.png?fit=max&auto=format&n=sXr9tLnaLYaLg1XK&q=85&s=ba63e90b139910ac18cc92139e39e8e7" alt="NextJs - Arquivos" width="387" height="461" data-path="wp-content/uploads/2024/06/next-estrutura-pastas-1.png" />

Com o projeto criado você também consegue executar o servidor de desenvolvimento para se certificar de que está funcionando normalmente, através do comando:

```
npm run dev
```

Se tudo ocorreu bem, a página padrão do framework deverá aparecer em [http://localhost:3000](http://localhost:3000)

<img src="https://mintcdn.com/san-internet/H0SzJLmfk8eSuQa1/wp-content/uploads/2024/06/pagina-padrao-next-localhost.png?fit=max&auto=format&n=H0SzJLmfk8eSuQa1&q=85&s=9f07976aaa2aa87e3a07c51a9fbb0958" alt="NextJs - Site" width="980" height="619" data-path="wp-content/uploads/2024/06/pagina-padrao-next-localhost.png" />

## 🔨 Compilando

Agora com o projeto instalado e funcional, podemos entender melhor a parte da compilação ou "build". Esta fase do projeto consiste no framework gerar um site com arquivos estáticos para conseguirmos utilizá-lo no cPanel posteriormente para servirmos o site.

Para fazemos a compilação de um site estático, precisamos antes definir uma configuração específica do Next.js, a propriedade `output` no arquivo `next.config.mjs` deixando-o da seguinte forma:

```
/** @type {import('next').NextConfig} */
const nextConfig = {
    output: 'export', // <== Adicione esta linha

    // Suas outras configurações abaixo...
};

export default nextConfig;
```

Dessa forma, a compilação que o framework fará, será de um site estático, possibilitando o uso no cPanel.

Próximo passo agora é testarmos a compilação com o comando:

```
npm run build
```

Se tudo deu certo, você verá um diretório novo na raiz do projeto chamado `out` o qual contem os arquivos estáticos do seu site:

<img src="https://mintcdn.com/san-internet/sXr9tLnaLYaLg1XK/wp-content/uploads/2024/06/nextjs-diretorio-out-estatico.png?fit=max&auto=format&n=sXr9tLnaLYaLg1XK&q=85&s=6b9cd138773ac0ad9586679e6d9caf7b" alt="NextJs - Pasta out" width="237" height="361" data-path="wp-content/uploads/2024/06/nextjs-diretorio-out-estatico.png" />

## 🚀 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 a publicação, focaremos de forma manual, para que você entenda os fundamentos.

Primeiramente, precisarás compactar os arquivos dentro deste diretório `out` gerado no processo de compilação. Neste caso será usado o próprio gerenciador de arquivos do Windows para facilitar o entendimento, mas poderia também ser utilizado o terminal para isso.

<img src="https://mintcdn.com/san-internet/sXr9tLnaLYaLg1XK/wp-content/uploads/2024/06/compactar-arquivo-zip-win.png?fit=max&auto=format&n=sXr9tLnaLYaLg1XK&q=85&s=32c06d8e1aea45f810f5f7c5f389e089" alt="Gerar arquivo ZIP" width="700" height="477" data-path="wp-content/uploads/2024/06/compactar-arquivo-zip-win.png" />

Feita a compressão, abra o diretório raiz do seu domínio no cPanel.

Esse diretório raiz do cPanel vai depender de como você configurou o domínio lá. Você encontra essa informação da aba "Domínios":

<img src="https://mintcdn.com/san-internet/sXr9tLnaLYaLg1XK/wp-content/uploads/2024/06/diretorio-raiz-dominio.png?fit=max&auto=format&n=sXr9tLnaLYaLg1XK&q=85&s=0b1923d7f4fa65d156be956edb5804a0" alt="cPanel - Domínios" width="700" height="208" data-path="wp-content/uploads/2024/06/diretorio-raiz-dominio.png" />

Agora que já sabemos qual é o diretório raiz do nosso site, poderemos fazer o upload do arquivo compactado que geramos, através do "Gerenciador de arquivos":

<img src="https://mintcdn.com/san-internet/H0SzJLmfk8eSuQa1/wp-content/uploads/2024/06/upload-arquivo-cpanel.png?fit=max&auto=format&n=H0SzJLmfk8eSuQa1&q=85&s=0eac8996a37f486bdcd6f064012cac7b" alt="cPanel - Gerenciador de arquivos" width="700" height="399" data-path="wp-content/uploads/2024/06/upload-arquivo-cpanel.png" />

Com o arquivo lá, agora podemos descompactar o conteúdo do site no diretório raiz (neste caso é o public\_html):

<img src="https://mintcdn.com/san-internet/sXr9tLnaLYaLg1XK/wp-content/uploads/2024/06/extracao-arquivo-cpanel.png?fit=max&auto=format&n=sXr9tLnaLYaLg1XK&q=85&s=928ca9c195fdcc72d71e02f77a99ceb1" alt="cPanel - Gerenciador de arquivos" width="479" height="447" data-path="wp-content/uploads/2024/06/extracao-arquivo-cpanel.png" />

<img src="https://mintcdn.com/san-internet/sXr9tLnaLYaLg1XK/wp-content/uploads/2024/06/confirmar-extracao-arquivo-cpanel.png?fit=max&auto=format&n=sXr9tLnaLYaLg1XK&q=85&s=b72ea663a8a14f59b2e83dc2fca1367e" alt="cPanel - Gerenciador de arquivos" width="601" height="322" data-path="wp-content/uploads/2024/06/confirmar-extracao-arquivo-cpanel.png" />

No final da extração você deverá ver os seus arquivos na mesma estrutura do arquivo `out` gerado anteriormente:

<img src="https://mintcdn.com/san-internet/sXr9tLnaLYaLg1XK/wp-content/uploads/2024/06/arquivo-out-estrutura.png?fit=max&auto=format&n=sXr9tLnaLYaLg1XK&q=85&s=c2f512ca86f7f4a34eef907c496c041a" alt="cPanel - Gerenciador de arquivos" width="694" height="492" data-path="wp-content/uploads/2024/06/arquivo-out-estrutura.png" />

É possível também excluir o arquivo compactado caso queira após a descompactação.

Feita a descompactação no diretório raiz, você já deverá conseguir acessar o seu site em seu domínio! 🎉

<img src="https://mintcdn.com/san-internet/sXr9tLnaLYaLg1XK/wp-content/uploads/2024/06/pagina-dominio-producao.png?fit=max&auto=format&n=sXr9tLnaLYaLg1XK&q=85&s=2e8a8229e0c7165396584ff8320f8215" alt="NextJs - Site" width="700" height="481" data-path="wp-content/uploads/2024/06/pagina-dominio-producao.png" />

***

Disclaimer: todos os comandos utilizados neste tutorial foram utilizados com base em versões específicas da documentação oficial das tecnologias utilizadas (Next.js v14, Node.js 22.3.0), portanto, consulte a documentação oficial para ter as informações mais atualizadas.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.