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