Como mantenho meu servidor Django funcionando mesmo depois de fechar minha sessão ssh?
-
11-12-2019 - |
Pergunta
Eu descobri como executar meu aplicativo Django via sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80
.No entanto, depois de sair do terminal, o servidor para de funcionar.
Tentei executar esse processo em segundo plano, mas o servidor desliga rapidamente após a execução sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80 &
.
Como mantenho meu aplicativo Django em execução mesmo depois de encerrar minha sessão ssh no terminal?
PS - Desculpe se esta pergunta lhe parece elementar.Essa tolice ocorre quando um programador front-end de javascript deve se transformar em um administrador de servidor em uma velocidade alucinante.
Solução
Encontrar tela.
Conecte-se através de ssh, tela inicial.Isso abre um emulador de console virtual além daquele fornecido pelo ssh.Inicie seu servidor lá.
Em seguida, pressione Ctrl-a e d.Isso desanexa a sessão da tela, mantendo-a em execução em segundo plano.
Para [R]e anexar a ele, use screen -r.
Se a tela não estiver instalada e você não conseguir instalá-la, você também poderá iniciar um aplicativo em segundo plano adicionando um & ao comando, como tentou.Mas você não deve fechar a janela do terminal;apenas desconecte, com o comando bash exit ou Ctrl-d.
A vantagem da tela é que você ainda pode ler a saída do servidor, caso haja algum erro ou algo assim.
Screen é uma ferramenta realmente poderosa, com muito mais comandos.Você pode adicionar uma nova janela virtual com Ctrl-a e depois c (para Criar);alterne pelas janelas com Ctrl-a, depois n (próximo) ou p (anterior), ...
Mas você precisa que ele esteja instalado para usá-lo.Como você parece ter acesso root, isso não deve ser um problema.
EDITAR: tmux é outra ótima solução para o mesmo caso de uso.
Outras dicas
Usar screen
para criar uma nova janela virtual e executar o servidor lá.
$ screen
$ python manage.py runserver
Você verá que o servidor Django começou a rodar.
Agora pressione Ctrl+A
e depois pressione o D
tecla para se desconectar dessa tela.Dirá:
$ [detached from ###.pts-0.hostname]
Agora você pode sair do seu terminal com segurança, fazer login novamente no seu terminal, fazer outras partes de codificação em outros diretórios, sair de férias, fazer o que quiser.
Para retornar à tela da qual você foi desconectado,
$ screen -r
Para encerrar o servidor Django agora, simplesmente pressione Ctrl+C
como você teria feito normalmente.
Para terminate
esta tela atual em vez de detaching
nesta tela, use Ctrl+D
.Dirá:
$ [screen is terminating]
$
Use nohup.Altere seu comando da seguinte maneira:
nohup sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80 &