Por que depois de executar o tmux em um servidor remoto via ssh, o programa funciona; mas após desanexar sessões, ele retorna 404?
Este é um programa Go(golang), um servidor http escutando em uma porta, atrás de um proxy reverso nginx.
Primeiros dados: tudo funciona bem assim:
1 - Eu me conecto ao servidor usando ssh user@server-ip
,
2 - correr tmux
,
3 - execute este script dentro da tmux
sessão, por . my-script.sh
:
#!/bin/sh
go build -v
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>/tmp/myapi.log 2>&1
export API_COUCHDB_ADMIN='admin'
export API_COUCHDB_PASSWORD='************'
export API_COUCHDB_URL='http://172.17.0.2:5984/'
# [some other env variables ...]
./myapi
4 - desanexe a sessão tmux porCtrl-be entãod.
Até agora tudo bem! Tudo funciona bem dentro de um navegador no endereço http://www.myapi-consumer.com
e o terminal ssh ainda está aberto; mas
5 - quando eu desanexo a sessão ssh (porCtrl+a e d), o programa não funciona mais corretamente e retorna 404 (é quem está enviando 404).
6 - Agora quando me reconecto ao servidor remoto usando ssh user@server-ip
então novamente ele funciona como esperado e estou testando a parte "funcionando" em outra conexão - no meu celular com outra conexão de internet.
O que está acontecendo?
Responder1
O problema é que o aplicativo está servindo arquivos que residem no diretório inicial, que são desmontados ao serem desconectados.
Eu recebi a resposta do grupo golang-nutsaqui.
Responder2
É assim que estou entendendo.
Você está dizendo que está saindo da sessão ou fechando a sessão atual do terminal. Um programa em execução e você acabou de fechar o terminal, ele não será mais executado.
Mas você está usando tmux
e pronto tmux
, para executar os programas em segundo plano.
Tente executar o programa colocando-o em segundo plano. Quero dizer
nohup myscript.sh &
nohup
para executar seu script mesmo que você assine, &[and]
para colocar seu script em segundo plano.
Espero que isso ajude você.