Вопрос по – Как сохранить работоспособность сервера Django даже после закрытия сеанса SSH?

19

Я понял, как запустить приложение 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, работающему на переднем конце, приходится с огромной скоростью превращаться в администратора сервера.

@DavidFaux, обслуживающий только одного клиента за раз. Даже если у вас был только один удар в секунду, хотя он просто медленный. Yuji 'Tomita' Tomita
Помните, что runserver предназначен только для разработки ... Yuji 'Tomita' Tomita
Вау, спасибо. Это важные приоритеты. Кстати, каковы последствия того, что сервер является однопоточным? dangerChihuahua007
Дон & APOS; т. Используйте. Runserver. В. Производство. Когда-либо. Он однопоточный. Это небезопасно. Это не оптимизировано. Совсем. Это исключительно и чистоconvenience чтобы вы могли проверить свой код в разработке. Он никогда не был спроектирован и не предназначен для использования за пределами этого. Chris Pratt
Подождите, почему это только для развития? Я тоже это читал в документации Django, но каковы недостатки? Я думаю, что это будет работать нормально. dangerChihuahua007

Ваш Ответ

3   ответа
6

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

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

Встретитьэкран.

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

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

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

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

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

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

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

РЕДАКТИРОВАТЬ:tmux еще одно отличное решение для того же варианта использования.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded!!! no tgetent - no screenError: User Rate Limit Exceeded dangerChihuahua007
Error: User Rate Limit Exceededsudo apt-get install libncurses5-devError: User Rate Limit ExceededpstreeError: User Rate Limit Exceeded dangerChihuahua007
7

использование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]
$
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded

Похожие вопросы