Как сохранить мой сервер Django даже после закрытия сеанса ssh?

Я понял, как запустить приложение Django с помощью sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80. Однако после выхода из терминала сервер перестает работать.

Я попытался запустить этот процесс в фоновом режиме, но сервер просто быстро выключается после выполнения sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80 &.

Как сохранить приложение Django даже после завершения сеанса ssh в терминале?

PS - Извините, если этот вопрос поражает вас как элементарного. Такая глупость возникает, когда программист javascript-интерфейса должен превращаться в администратора сервера с разрывом.

Ответы

Ответ 1

Встреча screen.

Подключиться через ssh, начать экран. Это откроет эмулятор виртуальной консоли поверх того, предоставленного ssh. Начните свой сервер там.

Затем нажмите Ctrl-a, затем d. Это отделит сеанс экрана, удерживая его в фоновом режиме.

Чтобы [R] подключить к нему, используйте экран -r.

Если экран не установлен, и вы не можете его установить, вы также можете запустить приложение в фоновом режиме, добавив команду a и к команде, как вы пробовали. Но вы не должны закрывать окно терминала; просто отсоедините, с выходом команды bash или Ctrl-d.

Преимущество экрана в том, что вы все равно можете читать вывод с сервера, если есть ошибка или что-то еще.

Экран - действительно мощный инструмент с множеством команд. Вы можете добавить новое виртуальное окно с помощью Ctrl-a, затем c (для Create); переключение через окна с помощью Ctrl-a, затем n (следующий) или p (предыдущий),...

Но вам нужно его установить для его использования. Поскольку у вас, похоже, есть root-доступ, это не должно быть проблемой.

EDIT: tmux - еще одно отличное решение для одного и того же варианта использования.

Ответ 2

Используйте nohup. Измените команду следующим образом:

nohup sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80 &

Ответ 3

Используйте screen для создания нового виртуального окна и запустите там сервер.

$ screen
$ python manage.py runserver

Вы увидите, что сервер Django запущен.

Теперь нажмите Ctrl+A, а затем нажмите клавишу D, чтобы отсоединиться от этого экрана. Он скажет:

$ [detached from ###.pts-0.hostname]

Теперь вы можете безопасно выйти из своего терминала, зайти в свой терминал, сделать другие биты кодирования в других каталогах, отправиться на каникулы, делать все, что захотите.


Чтобы вернуться к экрану, от которого вы отсоединились,

$ screen -r

Чтобы убить сервер django, просто нажмите Ctrl+C, как вы бы делали в обычном режиме.


В terminate этот текущий экран вместо detaching с этого экрана, используйте Ctrl+D. Он скажет:

$ [screen is terminating]
$