Como executar um arquivo executável (web app) 24/7 e reiniciar automaticamente quando ele falhar? [fechadas]

0

Eu tenho um arquivo executável em um servidor que é um aplicativo da web autônomo completo. Quando eu faço login em um servidor via ssh e executo o arquivo, o site fica visível na internet. Obviamente, porque é executado via ssh por mim, quando eu desligar o site cai.

Qual é a maneira idiomática e fácil de executar esse arquivo 24 horas por dia, 7 dias por semana e, de preferência, relançar quando ele for desativado?

É o Ubuntu 15, mas a minha pergunta não é apenas sobre isso.

Eu não quero usar nenhuma solução de terceiros ou serviços da web, apenas as ferramentas e aplicativos padrão do Linux.

Devo criar um serviço para o systemd?

    
por Oskar K. 15.04.2016 / 13:38

3 respostas

1

Sim, você precisa tornar um serviço executável do servidor Web completo. Prefiro uma conta não-root para o serviço - diria até que é obrigatório - limitar os danos nos casos em que o servidor web é comprometido. Eu acho que 1 systemd está bem documentado o suficiente para guiá-lo pelas etapas necessárias.

1 Eu não corro systemd , no caso de surgir a pergunta ...

    
por 15.04.2016 / 14:49
0

Nos sistemas init de estilo antigo, você pode usar o bom e velho aplicativo start-stop-daemon, que se encarrega de reiniciar o processo se ele morrer. Apenas faça algo como:

start-stop-daemon --start --background --exec /path/to/your/executable

Ele também permite definir a prioridade de agendamento, a prioridade de IO etc. para o processo que você está executando.

Em um sistema com systemd ativado, você também pode (ou ainda melhor) criar uma unidade de serviço systemd como mencionou. Ele fará a mesma coisa, mas usando a funcionalidade do systemd em vez de uma chamada separada do daemon start-stop-daemon. Veja por exemplo aqui para detalhes: link

    
por 15.04.2016 / 14:54
0
  • A maneira simples

crie um script (por exemplo, /home/user/start_service.sh ) com o seguinte conteúdo:

#!/bin/sh
while true; do
    path/to/service/executable
done

E adicione-o ao /etc/rc.local:

#!/bin/sh -e
su user -c '/home/user/start_service.sh' &
exit 0

Em seguida, inicie o script manualmente:

/home/user/start_service.sh

Assim, você pode esquecer seu aplicativo da web. Ele será iniciado automaticamente no início do sistema.

  • caminho certo:

Use ferramentas como systemd e upstart para criar um serviço a partir do seu aplicativo.

    
por 15.04.2016 / 15:46