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

# Hospedagem Laravel: deploy de uma aplicação Laravel

> Hospede uma aplicação Laravel na Square Cloud: o Composer roda sozinho e um START roda migrations e php artisan serve na porta 80, mais APP_KEY e variáveis.

export const PortNote = ({lang}) => {
  const t = {
    'en': {
      q: 'Which port and host should my server use?',
      a1: <>Listen on port <b>80</b> and host <b>0.0.0.0</b>. Square Cloud sends your site's HTTPS traffic to that port; a server bound to <code>localhost</code>, <code>127.0.0.1</code> or another port can't be reached and the site times out.</>,
      a2: <>The runtime sets <code>PORT=80</code> and <code>HOST=0.0.0.0</code> for you, so read the <code>PORT</code> and <code>HOST</code> environment variables instead of hard-coding them.</>
    },
    'pt-br': {
      q: 'Qual porta e host meu servidor deve usar?',
      a1: <>Escute na porta <b>80</b> e no host <b>0.0.0.0</b>. A Square Cloud envia o tráfego HTTPS do seu site para essa porta; um servidor preso a <code>localhost</code>, <code>127.0.0.1</code> ou a outra porta não é alcançado e o site dá timeout.</>,
      a2: <>O runtime já define <code>PORT=80</code> e <code>HOST=0.0.0.0</code>, então leia as variáveis de ambiente <code>PORT</code> e <code>HOST</code> em vez de fixar os valores no código.</>
    },
    'es': {
      q: '¿Qué puerto y host debe usar mi servidor?',
      a1: <>Escucha en el puerto <b>80</b> y en el host <b>0.0.0.0</b>. Square Cloud envía el tráfico HTTPS de tu sitio a ese puerto; un servidor vinculado a <code>localhost</code>, <code>127.0.0.1</code> u otro puerto no es accesible y el sitio agota el tiempo de espera.</>,
      a2: <>El runtime define <code>PORT=80</code> y <code>HOST=0.0.0.0</code> por ti, así que lee las variables de entorno <code>PORT</code> y <code>HOST</code> en lugar de escribirlas a mano en el código.</>
    },
    'fr': {
      q: 'Quel port et quel hôte mon serveur doit-il utiliser ?',
      a1: <>Écoutez sur le port <b>80</b> et l'hôte <b>0.0.0.0</b>. Square Cloud envoie le trafic HTTPS de votre site vers ce port ; un serveur lié à <code>localhost</code>, <code>127.0.0.1</code> ou à un autre port est injoignable et le site expire.</>,
      a2: <>Le runtime définit <code>PORT=80</code> et <code>HOST=0.0.0.0</code> pour vous : lisez les variables d'environnement <code>PORT</code> et <code>HOST</code> plutôt que de les écrire en dur dans le code.</>
    },
    'de': {
      q: 'Welchen Port und Host sollte mein Server verwenden?',
      a1: <>Ihr Server muss auf Port <b>80</b> und Host <b>0.0.0.0</b> lauschen. Square Cloud leitet den HTTPS-Traffic Ihrer Website an diesen Port weiter; ein Server, der an <code>localhost</code>, <code>127.0.0.1</code> oder einen anderen Port gebunden ist, ist nicht erreichbar und die Website läuft in einen Timeout.</>,
      a2: <>Die Runtime setzt <code>PORT=80</code> und <code>HOST=0.0.0.0</code> für Sie. Lesen Sie daher die Umgebungsvariablen <code>PORT</code> und <code>HOST</code>, statt die Werte fest im Code einzutragen.</>
    },
    'it': {
      q: 'Quale porta e quale host deve usare il mio server?',
      a1: <>Resta in ascolto sulla porta <b>80</b> e sull'host <b>0.0.0.0</b>. Square Cloud inoltra il traffico HTTPS del tuo sito a quella porta; un server legato a <code>localhost</code>, <code>127.0.0.1</code> o a un'altra porta non è raggiungibile e il sito va in timeout.</>,
      a2: <>Il runtime imposta già <code>PORT=80</code> e <code>HOST=0.0.0.0</code>, quindi leggi le variabili d'ambiente <code>PORT</code> e <code>HOST</code> invece di scrivere i valori nel codice.</>
    },
    'ja': {
      q: 'サーバーはどのポートとホストを使えばよいですか？',
      a1: <>ポート<b>80</b>、ホスト<b>0.0.0.0</b>で待ち受けてください。Square Cloudはサイトへの HTTPS トラフィックをこのポートに転送します。<code>localhost</code>、<code>127.0.0.1</code>、または別のポートにバインドしたサーバーには到達できず、サイトはタイムアウトします。</>,
      a2: <>ランタイムが <code>PORT=80</code> と <code>HOST=0.0.0.0</code> を自動で設定するため、値をコードに直接書かずに環境変数 <code>PORT</code> と <code>HOST</code> を読み取ってください。</>
    },
    'zh': {
      q: '我的服务器应该使用哪个端口和主机？',
      a1: <>请监听端口 <b>80</b> 和主机 <b>0.0.0.0</b>。Square Cloud 会把网站的 HTTPS 流量转发到该端口；绑定到 <code>localhost</code>、<code>127.0.0.1</code> 或其他端口的服务器无法访问，网站会超时。</>,
      a2: <>运行时已自动设置 <code>PORT=80</code> 和 <code>HOST=0.0.0.0</code>，因此请读取 <code>PORT</code> 和 <code>HOST</code> 环境变量，而不要在代码中写死这些值。</>
    }
  };
  const c = t[lang] || t['en'];
  return <Note>
            <b>{c.q}</b><br />
            {c.a1}<br />
            {c.a2}
        </Note>;
};

export const RecommendedPlan = ({lang, plan, tier, cpu, appType, min}) => {
  const t = {
    'en': {
      q: <>Which plan should you choose for {appType}?</>,
      rec: p => <>We recommend the {p} plan: its <b>{tier} GB</b> of RAM and <b>{cpu} vCPU</b> handle most projects of this kind, with headroom for traffic spikes.</>,
      min: m => <> Lighter projects also run on the {m} plan.</>,
      pro: p => <> For larger projects, the {p} plan adds more RAM and CPU.</>
    },
    'pt-br': {
      q: <>Qual plano escolher para {appType}?</>,
      rec: p => <>Recomendamos o plano {p}: seus <b>{tier} GB</b> de RAM e <b>{cpu} vCPU</b> atendem a maioria dos projetos desse tipo, com folga para picos de tráfego.</>,
      min: m => <> Projetos mais leves também rodam no plano {m}.</>,
      pro: p => <> Para projetos maiores, o plano {p} oferece mais RAM e CPU.</>
    },
    'es': {
      q: <>¿Qué plan elegir para {appType}?</>,
      rec: p => <>Te recomendamos el plan {p}: sus <b>{tier} GB</b> de RAM y <b>{cpu} vCPU</b> cubren la mayoría de los proyectos de este tipo, con margen para picos de tráfico.</>,
      min: m => <> Los proyectos más ligeros también funcionan en el plan {m}.</>,
      pro: p => <> Para proyectos más grandes, el plan {p} ofrece más RAM y CPU.</>
    },
    'fr': {
      q: <>Quel plan choisir pour héberger {appType} ?</>,
      rec: p => <>Nous recommandons le plan {p} : ses <b>{tier} Go</b> de RAM et <b>{cpu} vCPU</b> suffisent pour la plupart des projets de ce type, avec une marge pour les pics de trafic.</>,
      min: m => <> Les projets plus légers fonctionnent aussi avec le plan {m}.</>,
      pro: p => <> Pour les projets plus importants, le plan {p} offre davantage de RAM et de CPU.</>
    },
    'de': {
      q: <>Welcher Plan eignet sich für {appType}?</>,
      rec: p => <>Wir empfehlen den {p}-Plan: <b>{tier} GB</b> RAM und <b>{cpu} vCPU</b> reichen für die meisten Projekte dieser Art, mit Reserven für Lastspitzen.</>,
      min: m => <> Kleinere Projekte laufen auch mit dem {m}-Plan.</>,
      pro: p => <> Für größere Projekte bietet der {p}-Plan mehr RAM und CPU.</>
    },
    'it': {
      q: <>Quale piano scegliere per {appType}?</>,
      rec: p => <>Ti consigliamo il piano {p}: i suoi <b>{tier}GB</b> di RAM e <b>{cpu}vCPU</b> bastano per la maggior parte dei progetti di questo tipo, con margine per i picchi di traffico.</>,
      min: m => <> I progetti più leggeri funzionano anche con il piano {m}.</>,
      pro: p => <> Per progetti più grandi, il piano {p} offre più RAM e CPU.</>
    },
    'ja': {
      q: <>{appType}にはどのプランを選べばよいですか？</>,
      rec: p => <>{p}プランをおすすめします。<b>{tier}GB</b>のRAMと<b>{cpu}vCPU</b>があれば、この種のプロジェクトの多くをトラフィックのピークにも余裕を持って動かせます。</>,
      min: m => <>軽量なプロジェクトは{m}プランでも動作します。</>,
      pro: p => <>より大規模なプロジェクトには、RAMとCPUが増える{p}プランをご検討ください。</>
    },
    'zh': {
      q: <>托管{appType}应该选择哪个套餐？</>,
      rec: p => <>我们推荐 {p} 套餐：<b>{tier}GB</b> RAM 和 <b>{cpu}vCPU</b> 足以运行大多数此类项目，并能从容应对流量高峰。</>,
      min: m => <>较轻量的项目也可以在 {m} 套餐上运行。</>,
      pro: p => <>对于更大的项目，{p} 套餐提供更多 RAM 和 CPU。</>
    }
  };
  const siteLang = t[lang] ? lang : 'en';
  const c = t[siteLang];
  const pay = (name, query) => <a href={`https://squarecloud.app/${siteLang}/pay?${query}`}>{name}</a>;
  const isPro = plan.toLowerCase() === 'pro';
  return <Note>
      <b>{c.q}</b><br />
      {c.rec(pay(plan, `plan=${plan.toLowerCase()}&tier=${tier}`))}
      {min ? c.min(pay(min, `plan=${min.toLowerCase()}`)) : null}
      {isPro ? null : c.pro(pay('Pro', 'plan=pro'))}
    </Note>;
};

export const appType_0 = "uma aplicação Laravel"

## Introdução

Para desenvolver e hospedar {appType_0} na Square Cloud, siga a sequência de configurações e pré-requisitos abaixo.
Este guia cobre todo o processo, da configuração inicial ao deploy em produção.

### Pré-requisitos

* **Conta Square Cloud**: Cadastre-se através da [página de cadastro](https://squarecloud.app/pt-br/signup) usando seu e-mail.
* **Plano ativo**: Garante recursos dedicados e desempenho otimizado para seu aplicativo. Confira nossos [planos disponíveis](https://squarecloud.app/pt-br/pricing) e escolha o mais adequado às suas necessidades.

<RecommendedPlan appType="aplicações Laravel" plan="Standard" tier="4" cpu="4" min="Hobby" lang="pt-br" />

Este guia usa o [runtime PHP](/pt-br/articles/getting-started-with-php).

## Crie o projeto

Você precisa do PHP e do Composer na sua máquina. Instale o instalador do Laravel com o Composer:

```bash theme={"system"}
composer global require laravel/installer
```

Depois, crie um projeto e inicie o servidor de desenvolvimento:

```bash theme={"system"}
laravel new myapp
cd myapp
php artisan serve
```

O servidor de desenvolvimento normalmente escuta em `http://localhost:8000`. Aqui está uma rota básica em `routes/web.php`:

```php routes/web.php theme={"system"}
<?php

use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return 'Hello World from Laravel!';
});
```

## Faça o build para produção

A Square Cloud instala as suas dependências PHP com `composer install` antes de cada inicialização, a partir do `composer.json` e do `composer.lock`. Se a sua aplicação usa o Vite para os assets do frontend (o padrão), execute `npm run build` antes de criar o ZIP, para que a pasta `public/build` seja incluída.

## Escolha um servidor de produção

Sem um comando `START`, a Square Cloud executa o servidor embutido do PHP (`php -S 0.0.0.0:80`) com a raiz do projeto como document root. O document root do Laravel é a pasta `public/`, então as suas rotas retornariam erros 404 e arquivos como o `.env` poderiam ficar expostos. Sempre defina um comando `START` que rode o próprio servidor do Laravel.

## Porta e host

<PortNote lang="pt-br" />

O `php artisan serve` precisa dos dois valores na linha de comando: `--host=0.0.0.0 --port=80`. Sem `--host=0.0.0.0`, ele escuta apenas em `127.0.0.1` e o seu site dá timeout.

## Configure a Square Cloud

Crie um arquivo `squarecloud.app` na raiz do projeto:

```systemd squarecloud.app theme={"system"}
MAIN=public/index.php
MEMORY=512
VERSION=recommended
DISPLAY_NAME=My Laravel app
SUBDOMAIN=mylaravelapp
START=php artisan migrate --force && php artisan serve --host=0.0.0.0 --port=80
```

A cada inicialização, depois que a Square Cloud instala as suas dependências em `vendor/`, esse comando:

* `php artisan migrate --force` aplica as migrações pendentes do banco de dados. O `--force` é obrigatório para rodar migrações em produção.
* `php artisan serve --host=0.0.0.0 --port=80` serve a sua aplicação a partir da pasta `public/` pelo roteador do Laravel, na porta 80 e em todas as interfaces de rede.

O `MAIN=public/index.php` seleciona o runtime PHP. No upload pelo dashboard, defina o mesmo arquivo principal e o mesmo comando de inicialização.

### Variáveis de ambiente

Defina estas [variáveis de ambiente](/pt-br/platform/environment-variables) na sua aplicação, pelo dashboard ou com [`squarecloud app env set`](/pt-br/cli-reference/environment-variables#squarecloud-app-env-set), em vez de enviar o seu arquivo `.env` local:

| Variável | Valor |
| - | - |
| `APP_KEY` | A saída de `php artisan key:generate --show` |
| `APP_ENV` | `production` |
| `APP_DEBUG` | `false` (nunca `true` em produção) |
| `APP_URL` | O endereço do seu site, por exemplo `https://mylaravelapp.squareweb.app` |
| `DB_CONNECTION`, `DB_HOST`, `DB_PORT`, `DB_DATABASE`, `DB_USERNAME`, `DB_PASSWORD` | A conexão com o seu banco de dados. Projetos Laravel novos usam SQLite por padrão |

### Confiando no proxy da Square Cloud

A Square Cloud serve o seu site via HTTPS por meio de um proxy. Para que o Laravel gere links e URLs de assets com `https://`, confie no proxy em `bootstrap/app.php`:

```php bootstrap/app.php theme={"system"}
->withMiddleware(function (Middleware $middleware): void {
    $middleware->trustProxies(at: '*');
})
```

### Mais desempenho com Swoole

O `php artisan serve` atende uma requisição por vez. Para tráfego maior, o runtime PHP já inclui o Swoole: rode a sua aplicação nele com o Laravel Octane (`composer require laravel/octane`).

<Card title="Swoole" href="/pt-br/articles/getting-started-with-php#php-com-swoole" icon="php">
  Rode aplicações PHP sobre o Swoole na Square Cloud.
</Card>

## O que vai no ZIP

* O projeto inteiro: `app/`, `bootstrap/`, `config/`, `database/`, `public/` (com a `public/build` se você usa o Vite), `resources/`, `routes/`, `storage/`, `artisan`, `composer.json` e `composer.lock`.
* `squarecloud.app`.

Deixe de fora a `vendor/` e a `node_modules/` (a Square Cloud instala a `vendor/` no servidor) e o seu arquivo `.env` local.

## Faça o deploy e verifique

### Via dashboard

<Steps>
  <Step title="Acesse a página de upload">
    Acesse a [página de upload](https://squarecloud.app/pt-br/dashboard/new) e envie seu arquivo zip.
  </Step>

  <Step title="Configure seu ambiente">
    Após fazer o upload do seu arquivo zip, você precisará configurar o nome, o arquivo principal ou o ambiente de execução e outras configurações do seu projeto.\
    Se você estiver enviando um projeto web, certifique-se de selecionar "Publicação na Web" e definir um subdomínio para o seu projeto.
  </Step>

  <Step title="Faça o deploy do projeto">
    Por fim, clique no botão "Deploy" para hospedar seu projeto na Square Cloud.
    Após o deploy, você poderá monitorar o status e os registros do seu projeto no dashboard.

    <Frame>
      <img src="https://cdn.squarecloud.app/docs/articles/dashboard/uploading-pt-br.gif" alt="Enviando aplicação para a Square Cloud" style={{ borderRadius: "0.2rem" }} />
    </Frame>
  </Step>

  <Step title="Confirme que seu app está no ar">
    Seu primeiro deploy geralmente leva menos de um minuto. No [dashboard](https://squarecloud.app/pt-br/dashboard), aguarde o status da sua aplicação mudar para em execução e verifique os registros em busca de erros de inicialização.\
    Se você fez deploy de um site ou API, abra `https://<seu-subdominio>.squareweb.app` no navegador: você deve ver sua aplicação respondendo. Se você fez deploy de um bot, envie um comando para confirmar que ele está online.
    <Tip>Seu app não está iniciando? Veja o [guia de solução de problemas](/pt-br/platform/troubleshooting/app-wont-start) para as causas e correções mais comuns.</Tip>
  </Step>
</Steps>

### Via CLI

Para usar esse método, seu projeto precisa de um arquivo de configuração chamado `squarecloud.app` na raiz. Ele informa à Square Cloud como executar a sua aplicação.

<Card title="Guia do arquivo de configuração" icon="link" href="/pt-br/getting-started/config-file">
  Saiba como criar o arquivo de configuração `squarecloud.app` que define o ambiente da sua aplicação.
</Card>

<Steps>
  <Step title="Instale a CLI">
    Instale a [CLI da Square Cloud](/pt-br/cli-reference/installation). Se você já a tem, execute o mesmo comando para atualizá-la:

    <CodeGroup>
      ```bash macOS, Linux e WSL theme={"system"}
      curl -fsSL https://cli.squarecloud.app/install | bash
      ```

      ```bash Windows com npm theme={"system"}
      npm install -g @squarecloud/cli@latest
      ```
    </CodeGroup>
  </Step>

  <Step title="Faça login">
    Execute o comando abaixo. Ele abre o seu navegador: aprove o login lá e a CLI está pronta. Não há nenhuma chave de API para copiar. Para scripts e CI, veja [autenticação da CLI](/pt-br/cli-reference/authentication).

    ```bash theme={"system"}
    squarecloud auth login
    ```
  </Step>

  <Step title="Envie o seu projeto">
    Na pasta do seu projeto, execute o comando abaixo. A CLI compacta a pasta atual, deixando de fora o que o [`squarecloud.ignore`](/pt-br/getting-started/squarecloud-ignore) lista, e faz o upload:

    ```bash theme={"system"}
    squarecloud upload
    ```

    Para enviar um zip que você mesmo criou, passe-o com `--file`:

    ```bash theme={"system"}
    squarecloud upload --file <caminho/para/zip>
    ```
  </Step>

  <Step title="Confirme que seu app está no ar">
    Seu primeiro deploy geralmente leva menos de um minuto. Verifique o status e os registros da sua aplicação diretamente pelo terminal:

    ```bash theme={"system"}
    squarecloud app status
    squarecloud app logs
    ```

    Se você fez deploy de um site ou API, abra `https://<seu-subdominio>.squareweb.app` no navegador: você deve ver sua aplicação respondendo. Se você fez deploy de um bot, envie um comando para confirmar que ele está online.
    <Tip>Seu app não está iniciando? Veja o [guia de solução de problemas](/pt-br/platform/troubleshooting/app-wont-start) para as causas e correções mais comuns.</Tip>
  </Step>
</Steps>

## Erros comuns

<CardGroup cols={1}>
  ### Domínio personalizado

  <Card horizontal>
    Para usar um domínio personalizado (ex.: `meusite.com`) no lugar da URL padrão `meusite.squareweb.app`, você precisa do **plano Standard ou superior**. A URL padrão vem do campo **SUBDOMAIN** no arquivo de configuração. Para conectar o seu domínio, veja [como configurar seu próprio domínio](https://help.squarecloud.app/pt-br/article/como-configurar-seu-proprio-dominio-cnamedns-j39hh2/).
  </Card>

  ### Requisitos mínimos de RAM

  <Card horizontal>
    **Mínimo: 512MB de RAM** para sites e APIs, o suficiente para um build estático no runtime estático. Para aplicações que renderizam páginas no servidor (Next.js, Nuxt, Angular SSR e similares), recomendamos **pelo menos 1GB de RAM**. Para aplicações maiores, aloque mais RAM para evitar que a aplicação fique sem memória e trave.
  </Card>

  ### Não foi possível encontrar esse site.

  <Card horizontal>
    Verifique se o **subdomínio/domínio** corresponde ao configurado no campo **SUBDOMAIN** ou nas **configurações de domínio personalizado**. Se você acabou de enviar o site, aguarde até **60 segundos** para a Square liberar o **primeiro acesso**.
  </Card>

  ### Site demorou demais para responder...

  <Card horizontal>
    O seu servidor precisa escutar na **porta 80** e no **host 0.0.0.0**. A Square Cloud define as variáveis de ambiente **PORT** (`80`) e **HOST** (`0.0.0.0`) na sua aplicação: leia essas variáveis no código em vez de fixar outros valores. Um servidor que escuta apenas em `localhost` ou `127.0.0.1` nunca recebe requisições.
  </Card>
</CardGroup>

### No application encryption key has been specified

A `APP_KEY` está faltando. Gere uma com `php artisan key:generate --show`, defina-a como variável de ambiente e reinicie a aplicação.

## Próximos passos

<CardGroup cols={3}>
  <Card title="Variáveis de ambiente" icon="key" href="/pt-br/platform/environment-variables">
    Mantenha segredos e configurações fora do código e leia-os em tempo de execução.
  </Card>

  <Card title="Domínio personalizado" icon="globe" href="https://help.squarecloud.app/pt-br/article/como-configurar-seu-proprio-dominio-cnamedns-j39hh2/">
    Sirva a sua aplicação no seu próprio domínio, a partir do plano Standard.
  </Card>

  <Card title="Solução de problemas" icon="wrench" href="/pt-br/platform/troubleshooting">
    Corrija uma aplicação que não inicia ou um site que não responde.
  </Card>
</CardGroup>

Para saber mais sobre o Laravel, consulte a [documentação oficial do Laravel](https://laravel.com/docs).

## Contate-nos

Se você continuar enfrentando **dificuldades técnicas**, nossa **equipe de suporte especializada** está disponível para auxiliá-lo. [**Entre em contato conosco**](https://squarecloud.app/pt-br/support) e teremos prazer em ajudá-lo a resolver qualquer questão: a qualidade do suporte é uma grande parte do motivo pelo qual desenvolvedores avaliam a Square Cloud com [**4,9/5 em 402 avaliações**](https://www.trustpilot.com/review/squarecloud.app) no Google e Trustpilot.


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