Esta página foi traduzida pela comunidade e pode não estar atualizada. Consulte a versão de referência.

Esta página foi traduzida pela comunidade e pode não estar atualizada. Consulte a versão de referência.

Esta página foi traduzida pela comunidade e pode não estar atualizada. Consulte a versão de referência.

Desenvolvido com
Laravel

Laravel

# Docker

Servir uma aplicação web Laravel com FrankenPHP é tão fácil quanto montar o projeto no diretório /app da imagem Docker oficial.

Execute este comando a partir do diretório principal da sua aplicação Laravel:

docker run -p 80:80 -p 443:443 -p 443:443/udp -v $PWD:/app dunglas/frankenphp

E divirta-se!

# Instalação local

Alternativamente, você pode executar seus projetos Laravel com FrankenPHP a partir da sua máquina local:

  1. Baixe o binário correspondente ao seu sistema.

  2. Adicione a seguinte configuração a um arquivo chamado Caddyfile no diretório raiz do seu projeto Laravel:

    {
        frankenphp
    }
    
    # O nome de domínio do seu servidor
    localhost {
        # Define o diretório raiz como public/
        root public/
        # Habilita a compressão (opcional)
        encode zstd br gzip
        # Executa os arquivos PHP a partir do diretório public/ e serve os assets
        php_server {
            try_files {path} index.php
        }
    }
    
  3. Inicie o FrankenPHP a partir do diretório raiz do seu projeto Laravel: frankenphp run.

# Laravel Octane

O Octane pode ser instalado através do gerenciador de pacotes Composer:

composer require laravel/octane

Após instalar o Octane, você pode executar o comando octane:install do Artisan, que instalará o arquivo de configuração do Octane em sua aplicação:

php artisan octane:install --server=frankenphp

O servidor Octane pode ser iniciado por meio do comando octane:frankenphp do Artisan.

php artisan octane:frankenphp

O comando octane:frankenphp pode receber as seguintes opções:

  • --host: O endereço IP ao qual o servidor deve se vincular (padrão: 127.0.0.1);
  • --port: A porta na qual o servidor deve estar disponível (padrão: 8000);
  • --admin-port: A porta na qual o servidor de administração deve estar disponível (padrão: 2019);
  • --workers: O número de workers que devem estar disponíveis para processar requisições (padrão: auto);
  • --max-requests: O número de requisições a serem processadas antes de recarregar o servidor (padrão: 500);
  • --caddyfile: O caminho para o arquivo Caddyfile do FrankenPHP (padrão: stub do Caddyfile no Laravel Octane);
  • --https: Habilita HTTPS, HTTP/2 e HTTP/3 e gera e renova certificados automaticamente;
  • --http-redirect: Habilita o redirecionamento de HTTP para HTTPS (somente
  • habilitado se --https for passada);
  • --watch: Recarrega o servidor automaticamente quando a aplicação é modificada;
  • --poll: Usa o polling do sistema de arquivos durante a verificação para monitorar arquivos em uma rede;
  • --log-level: Registra mensagens de log no nível de log especificado ou acima dele, usando o logger nativo do Caddy.

Tip

Para obter logs JSON estruturados (útil ao usar soluções de análise de logs), passe explicitamente a opção –log-level.

Saiba mais sobre o Laravel Octane em sua documentação oficial.

# Aplicações Laravel como binários independentes

Usando o recurso de incorporação de aplicações do FrankenPHP, é possível distribuir aplicações Laravel como binários independentes.

Siga estes passos para empacotar sua aplicação Laravel como um binário independente para Linux:

  1. Crie um arquivo chamado static-build.Dockerfile no repositório da sua aplicação:

    FROM --platform=linux/amd64 dunglas/frankenphp:static-builder
    
    # Copia sua aplicação
    WORKDIR /go/src/app/dist/app
    COPY . .
    
    # Remove os testes e outros arquivos desnecessários para economizar espaço
    # Como alternativa, adicione esses arquivos a um arquivo .dockerignore
    RUN rm -Rf tests/
    
    # Copia o arquivo .env
    RUN cp .env.example .env
    # Altera APP_ENV e APP_DEBUG para que estejam prontas para produção
    RUN sed -i'' -e 's/^APP_ENV=.*/APP_ENV=production/' -e 's/^APP_DEBUG=.*/APP_DEBUG=false/' .env
    
    # Faça outras alterações no seu arquivo .env, se necessário
    
    # Instala as dependências
    RUN composer install --ignore-platform-reqs --no-dev -a
    
    # Compila o binário estático
    WORKDIR /go/src/app/
    RUN EMBED=dist/app/ ./build-static.sh
    

    Caution

    Alguns arquivos .dockerignore ignorarão o diretório vendor/ e os arquivos .env. Certifique-se de ajustar ou remover o arquivo .dockerignore antes da compilação.

  2. Construa:

    docker build -t static-laravel-app -f static-build.Dockerfile .
    
  3. Extraia o binário:

    docker cp $(docker create --name static-laravel-app-tmp static-laravel-app):/go/src/app/dist/frankenphp-linux-x86_64 frankenphp ; docker rm static-laravel-app-tmp
    
  4. Popule os caches:

    frankenphp php-cli artisan optimize
    
  5. Execute as migrações de banco de dados (se houver):

    frankenphp php-cli artisan migrate
    
  6. Gere a chave secreta da aplicação:

    frankenphp php-cli artisan key:generate
    
  7. Inicie o servidor:

    frankenphp php-server
    

Agora sua aplicação está pronta!

Saiba mais sobre as opções disponíveis e como compilar binários para outros sistemas operacionais na documentação de incorporação de aplicações.

# Alterando o caminho do armazenamento

Por padrão, o Laravel armazena arquivos enviados, caches, logs, etc., no diretório storage/ da aplicação. Isso não é adequado para aplicações embarcadas, pois cada nova versão será extraída para um diretório temporário diferente.

Defina a variável de ambiente LARAVEL_STORAGE_PATH (por exemplo, no seu arquivo .env) ou chame o método Illuminate\Foundation\Application::useStoragePath() para usar um diretório fora do diretório temporário.

# Executando o Octane com binários independentes

É possível até empacotar aplicações Octane do Laravel como binários independentes!

Para fazer isso, instale o Octane corretamente e siga os passos descritos na seção anterior.

Em seguida, para iniciar o FrankenPHP no modo worker através do Octane, execute:

PATH="$PWD:$PATH" frankenphp php-cli artisan octane:frankenphp

Caution

Para que o comando funcione, o binário independente deve ser nomeado frankenphp porque o Octane precisa de um programa chamado frankenphp disponível no caminho.

Editar esta página