Почему после запуска tmux на удаленном сервере через ssh программа работает, но после отключения сеансов возвращает 404?
Это программа на Go(golang), http-сервер, прослушивающий порт за обратным прокси-сервером nginx.
Первые данные: все работает нормально, вот так:
1 - Я подключаюсь к серверу с помощью ssh user@server-ip
,
2 - бег tmux
,
3 - запустить этот скрипт внутри tmux
сеанса, выполнив . 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 - отсоединить сеанс tmux с помощьюCtrl-bа потомг.
Пока все хорошо! Все отлично работает в браузере по адресу, http://www.myapi-consumer.com
и терминал ssh все еще открыт; но
5 - когда я отключаю сеанс ssh (поCtrl+a и d), программа перестает работать правильно и возвращает 404 (она же и отправляет 404).
6 - Теперь, когда я снова подключаюсь к удаленному серверу, ssh user@server-ip
он работает так, как и ожидалось, и я тестирую «рабочую» часть на другом соединении - на моем мобильном телефоне с другим подключением к Интернету.
Что происходит?
решение1
Проблема в том, что приложение обслуживает файлы, находящиеся в домашнем каталоге, который отключается при отключении.
У меня есть ответ от группы golang-nutsздесь.
решение2
Вот как я это понимаю.
Вы говорите, что выходите из сеанса или закрываете текущий сеанс терминала. Программа запущена, и вы только что закрыли свой терминал, она больше не будет работать.
Но вы используете tmux
и все tmux
для того, чтобы запускать программы в фоновом режиме.
Попробуйте запустить программу, поместив ее из фонового режима. Я имею в виду
nohup myscript.sh &
nohup
запустить ваш скрипт, даже если вы вышли из системы, &[and]
перевести ваш скрипт в фоновый режим.
Надеюсь, это вам поможет.