O gerenciamento de aplicativos Node.js em um servidor de produção geralmente requer um gerenciador de processos para garantir que seus aplicativos funcionem sem problemas e se recuperem automaticamente de falhas. PM2 é um dos gerenciadores de processos mais populares para Node.js, oferecendo recursos poderosos como monitoramento de processos, gerenciamento de logs e modo cluster.
Se você estiver executando um aplicativo em uma instância do Google Cloud Ubuntu, poderá encontrar uma situação em que os processos PM2 ficam visíveis apenas para o usuário que os iniciou. Isso pode ser problemático se o seu servidor tiver vários usuários, como desenvolvedores, administradores de sistema ou scripts de implantação automatizados. Nesta postagem do blog, percorreremos as etapas para configurar o PM2 como um serviço para todo o sistema, tornando-o acessível a todos os usuários no servidor.
Por padrão, o PM2 é executado como um processo sob o usuário que o iniciou. Isso significa que se você usar SSH em seu servidor como um usuário e iniciar um processo PM2, esse processo não ficará visível para outro usuário que fizer login via SSH. Para resolver isso, podemos configurar o PM2 para funcionar como um serviço no nível do sistema. Esta abordagem tem várias vantagens:
Antes de começarmos, certifique-se de ter o seguinte:
Para garantir que todos os usuários possam acessar o PM2, ele deve ser instalado globalmente. Você pode instalar o PM2 globalmente usando npm:
sudo npm install -g pm2
Este comando instala o PM2 no diretório npm global, tornando-o disponível em todo o sistema.
Em seguida, precisamos configurar o PM2 para funcionar como um serviço. Isso permitirá que o PM2 gerencie processos no nível do sistema, em vez de ficar vinculado a uma sessão de usuário específica.
Execute o seguinte comando para gerar o script de inicialização necessário para PM2:
pm2 startup
Este comando detecta o sistema init usado pela sua instância Ubuntu (normalmente systemd) e fornece um comando que precisa ser executado com sudo para configurar o PM2 como um serviço de todo o sistema. A saída será semelhante a esta:
[PM2] Init System found: systemd [PM2] To setup the Startup Script, copy/paste the following command: sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u--hp /home/
Aqui,
Copie o comando fornecido na saída da etapa anterior e execute-o. Por exemplo:
sudo env PATH=$PATH:/usr/bin pm2 startup systemd -u johndoe --hp /home/johndoe
Este comando cria um serviço systemd que inicia o PM2 com as variáveis de ambiente e contexto de usuário corretos.
Se você já possui processos em execução no PM2 que deseja persistir durante as reinicializações, será necessário salvar a lista de processos atual. Isso cria um arquivo de despejo que o PM2 usará para restaurar processos quando o sistema for iniciado:
pm2 save
O comando pm2 save salva a lista atual de processos gerenciados em um arquivo JSON em ~/.pm2/dump.pm2. Este arquivo é carregado automaticamente quando o PM2 é iniciado, garantindo que seus aplicativos sejam ressuscitados após uma reinicialização.
Para garantir que o PM2 seja iniciado automaticamente quando o sistema inicializar, você precisa habilitar o serviço:
sudo systemctl enable pm2-johndoe
Substitua johndoe pelo nome de usuário apropriado. Este comando habilita o serviço PM2, garantindo que ele seja iniciado sempre que o sistema for inicializado.
Agora que o PM2 está configurado como um serviço para todo o sistema, ele deve estar acessível a qualquer usuário no servidor. Para verificar o status dos processos ou listá-los, qualquer usuário pode executar:
pm2 list
Este comando exibirá a lista de processos gerenciados pelo serviço PM2 de todo o sistema, independentemente de qual usuário esteja logado.
Se você precisar que os logs do PM2 sejam acessíveis por vários usuários, pode ser necessário ajustar as permissões do arquivo ou configurar o PM2 para armazenar logs em um diretório compartilhado. Isso garante que todos os usuários possam visualizar e gerenciar logs dos processos em execução no PM2.
Para alterar o diretório do arquivo de log, você pode usar a seguinte variável de ambiente:
export PM2_HOME=/path/to/shared/pm2/home
Defina isso em um arquivo de configuração global, como /etc/environment, para torná-lo persistente entre as sessões.
Depois que o PM2 for configurado como um serviço, os usuários poderão gerenciar processos usando comandos PM2 padrão. No entanto, dependendo das permissões e funções do usuário, alguns comandos podem exigir acesso sudo. Por exemplo:
sudo pm2 list
Este comando listará os processos gerenciados pelo serviço PM2 em todo o sistema, facilitando a colaboração de administradores e desenvolvedores no gerenciamento do servidor.
Configurar o PM2 como um serviço para todo o sistema em sua instância Ubuntu garante que seus aplicativos Node.js sejam gerenciados de forma robusta e acessíveis a todos os usuários no servidor. Essa configuração é particularmente útil em ambientes com vários usuários ou processos de implantação automatizados, fornecendo uma maneira confiável e centralizada de gerenciar aplicativos.
Seguindo as etapas descritas neste guia, você pode garantir que o PM2 esteja disponível para todos os usuários, que seus processos sejam reiniciados automaticamente após a reinicialização do sistema e que os logs sejam facilmente acessíveis. Isso não apenas simplifica o gerenciamento do servidor, mas também aumenta a confiabilidade dos seus aplicativos em produção.
Boa codificação!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3