Trabalhador de fila de Laravel como um serviço Systemd

Trabalhador de fila de Laravel como um serviço Systemd

O Laravel é uma estrutura popular de aplicativos da Web PHP que simplifica o processo de criação de aplicativos da Web modernos e escaláveis. Uma das principais características do Laravel é sua capacidade de lidar com trabalhos de fundo através de seu sistema de filas. Os trabalhadores da fila de Laravel são projetados para processar trabalhos na fila de forma assíncrona em segundo plano, o que pode melhorar bastante o desempenho e a capacidade de resposta do seu aplicativo da web.

Enquanto o Laravel fornece uma interface simples da linha de comando para gerenciar trabalhadores da fila, pode ser um desafio mantê-los funcionando continuamente em ambientes de produção. Neste artigo, exploraremos como executar trabalhadores da fila de Laravel usando o Systemd, um sistema init popular para Linux.

Pré -requisitos

Antes de começarmos, você precisará garantir que seu servidor atenda aos seguintes requisitos:

  • Um sistema operacional baseado em Linux
  • PHP versão 7.2 ou superior
  • A estrutura do Laravel instalada e configurada
  • O sistema Systemd init instalado e configurado

Criando um serviço Systemd

O primeiro passo na execução dos trabalhadores da fila de Laravel com o Systemd é criar um arquivo de serviço Systemd. Este arquivo definirá o comportamento do trabalhador da fila e como deve ser iniciado, parado e reiniciado.

Criar um novo arquivo no “/Etc/Systemd/System/” diretório com um .Extensão de serviço, como “Laravel-worker.serviço".

sudo nano/etc/Systemd/System/Laravel Worker.serviço  

Adicione o seguinte conteúdo ao arquivo:

[Unidade] Descrição = Trabalhador da fila de Laravel após = Rede.Target [Service] User = WWW-Data Group = WWW-Data Restart = sempre funcionando Directory =/PATH/TO/Your/Laravel ExecStart =/usr/bin/php fila artesanal: trabalho--Sleep = 3-Tries = 3 [ Install] wantedby = multiususer.alvo
12345678910111213[Unidade] Descrição = Laravel fila trabalhadorfter = rede.Target [Service] Usuário = www-dataGroup = www-datarestart = sempreWORKINGDirectory =/Path/para/your/laravelexecStart =/usr/bin/php fila artesan multi usuário.alvo

Substituir “/PATH/para/seu/laravel” com seu diretório de aplicativos Laravel. Também defina seu comando artesão em “Exectart” opções.

Vamos dividir este arquivo e o que cada seção significa:

  • Unidade: Esta seção define a unidade de serviço e fornece uma breve descrição do que faz. O parâmetro pós -.
  • Serviço: Esta seção especifica os detalhes de como o serviço deve ser executado. Os parâmetros de usuário e grupo especificam o usuário e o grupo em que o serviço deve ser executado. O "Reiniciar" O parâmetro especifica que o serviço deve ser reiniciado se parar ou travar. O “Exectart” Parâmetro Especifica o comando que deve ser executado para iniciar o trabalhador da fila. Nesse caso, estamos usando o binário PHP para executar a fila: comando de trabalho com o --sono = 3 e --tenta = 3 opções. Essas opções especificam que o trabalhador da fila deve dormir por 3 segundos entre cada trabalho e deveriam voltar a trabalhar em trabalhos até 3 vezes antes de marcá -los como falhados.
  • Instalar: Esta seção especifica os níveis de execução nos quais o serviço deve ser ativado. O parâmetro WantedBy especifica que o serviço deve ser ativado no alvo multi-usuário, que é o alvo padrão para a maioria das distribuições Linux.

Salve o arquivo e saia do editor.

Permitindo o serviço

Primeiro execute o seguinte comando para recarregar o serviço de daemon systemd. Você precisa executar este comando sempre, você faz qualquer alteração no arquivo de serviço.

SUDO SystemCTL Daemon-Reload  

Para garantir que o trabalhador da fila de Laravel inicie automaticamente quando o servidor inicializar, podemos ativar o serviço usando o seguinte comando:

sudo systemctl Ativar trabalho de laravel  

Este comando criará um link simbólico no diretório apropriado para iniciar o serviço automaticamente na inicialização.

Iniciando o serviço

Agora que criamos e ativamos o arquivo de serviço Systemd, podemos iniciar o serviço usando o seguinte comando:

SUDO SYSTEMCTL START LARAVELER  

Este comando iniciará o trabalhador da fila de Laravel como um serviço Systemd. Você pode verificar se o serviço está funcionando corretamente, verificando seu status:

SUDO SYSTEMCTL STATUS LARAVELER  

Este comando exibirá informações sobre o serviço, incluindo seu status atual e quaisquer entradas recentes de log.

Controlando o serviço

Depois que o serviço estiver em execução, você pode controlá -lo usando os comandos STANDARDDD. Aqui estão alguns comandos comuns que você pode usar para controlar o Serviço de Trabalhador da Fila de Laravel:

  • SUDO SYSTEMCTL STOP LARAVEN WORKER: Este comando interromperá o serviço.
  • SUDO SYSTEMCTL RESPONDERIR LARAVELER: Este comando irá reiniciar o serviço.
  • sudo systemctl desabilitando o trabalho de laravel: Este comando desativará o serviço de iniciar automaticamente na inicialização.
  • SUDO SYSTEMCTL STATUS LARAVELER: Este comando exibirá o status do serviço, incluindo se está sendo executado ou parado, e quaisquer entradas recentes de log.

Conclusão

A execução dos trabalhadores da fila de Laravel com o Systemd é uma ótima maneira de garantir que seus trabalhos em segundo plano estejam sempre funcionando de maneira suave e eficiente em ambientes de produção. Ao criar um arquivo de serviço Systemd e ativá -lo na inicialização, você pode automatizar o processo de iniciar e interromper o trabalhador da fila, facilitando o gerenciamento e o controle.

Neste artigo, abordamos as etapas básicas para criar um arquivo de serviço Systemd para o trabalhador da fila de Laravel, iniciando o serviço, ativando -o na inicialização e controlando -o usando comandos Systemd. Com esse conhecimento, você pode gerenciar e dimensionar com confiança seus aplicativos de Laravel com facilidade.