Warum funktioniert das Programm, nachdem ich tmux auf einem Remote-Server über SSH ausgeführt habe, gibt aber nach dem Trennen der Sitzungen die Fehlermeldung 404 zurück?
Dies ist ein Go(Golang)-Programm, ein HTTP-Server, der auf einem Port hinter einem Nginx-Reverse-Proxy lauscht.
Erste Daten: alles funktioniert einwandfrei und zwar so:
1 - Ich verbinde mich mit dem Server über ssh user@server-ip
,
2 - laufen tmux
,
3 - Führen Sie dieses Skript innerhalb tmux
der Sitzung aus, indem Sie . 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 - Trennen Sie die tmux-Sitzung durchStrg-bund dannD.
So weit, so gut! Alles funktioniert einwandfrei im Browser http://www.myapi-consumer.com
und das SSH-Terminal ist immer noch geöffnet; aber
5 - wenn ich die SSH-Sitzung trenne (durchStrg+a und d), funktioniert das Programm nicht mehr richtig und gibt 404 zurück (es ist das Programm, das 404 sendet).
6 – Wenn ich mich jetzt erneut mit dem Remote-Server verbinde, ssh user@server-ip
funktioniert es wie erwartet und ich teste den „funktionierenden“ Teil auf einer anderen Verbindung – auf meinem Mobiltelefon mit einer anderen Internetverbindung.
Was passiert?
Antwort1
Das Problem besteht darin, dass die App Dateien bereitstellt, die sich im Home-Verzeichnis befinden, das beim Trennen der Verbindung ausgehängt wird.
Ich habe die Antwort von der Golang-Nuts-Gruppe bekommenHier.
Antwort2
So verstehe ich es.
Sie sagen, Sie beenden die Sitzung oder schließen die aktuelle Terminalsitzung. Ein Programm läuft und Sie haben gerade Ihr Terminal geschlossen, es wird nicht mehr laufen.
tmux
Aber das ist alles , was Sie verwenden tmux
, um die Programme im Hintergrund auszuführen.
Versuchen Sie, das Programm auszuführen, indem Sie es aus dem Hintergrund platzieren. Ich meine
nohup myscript.sh &
nohup
um Ihr Skript auszuführen, auch wenn Sie sich abmelden, &[and]
um Ihr Skript in den Hintergrund zu verschieben.
Hoffe, es wird Ihnen helfen.