2012-05-18 2 views
17

sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80을 통해 내 장고 응용 프로그램을 실행하는 방법을 알았습니다. 그러나 터미널을 종료 한 후에는 서버가 실행되지 않습니다.ssh 세션을 닫은 후에도 장고 서버를 계속 실행하려면 어떻게해야합니까?

백그라운드에서이 프로세스를 실행하려고 시도했지만 sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80 &을 실행 한 후 서버가 바로 종료됩니다.

단말기에서 ssh 세션을 종료 한 후에도 내 장고 응용 프로그램을 계속 실행하려면 어떻게해야합니까?

추신 -이 질문이 당신을 초등 친다면 죄송합니다. 이러한 어리 석음은 프론트 엔드 자바 스크립트 프로그래머가 break-neck 속도로 서버 관리자로 전환해야 할 때 발생합니다.

+3

단지 runserver가 개발 용임을 기억하십시오 ... –

+0

잠깐, 왜 개발 용입니까? Django 문서에서도이 내용을 읽었지만 단점은 무엇입니까? 나는 그것이 잘 될 것이라고 생각합니다. – dangerChihuahua007

+5

하지 마십시오. 용도. Runserver. 에서. 생산. 이제까지. 그것은 단일 스레드입니다. 그것은 안전하지 않습니다. 최적화되지 않았습니다. 조금도. 개발시 코드를 테스트 할 수있는 것은 전적으로 순수한 편의입니다. 그것은 그 이상으로 사용되도록 설계되거나 의도되지 않았습니다. –

답변

26

만나서 screen.

ssh를 통해 연결하고 시작 화면. 그러면 ssh가 제공하는 가상 콘솔 에뮬레이터가 열립니다. 서버를 거기에서 시작하십시오.

그런 다음 Ctrl-a를 누른 다음 d를 누릅니다. 이렇게하면 화면 세션이 분리되어 백그라운드에서 계속 실행됩니다.

[R] 첨부하려면 화면 -r을 사용하십시오.

화면이 설치되지 않았고 설치할 수없는 경우 시도한 것처럼 명령에 &을 추가하여 백그라운드에서 응용 프로그램을 시작할 수도 있습니다. 하지만 터미널 창을 닫지 않아야합니다. bash 명령 종료 또는 Ctrl-d를 사용하여 연결을 w 으십시오.

화면의 장점은 오류가 있거나 다른 경우에 대비하여 서버의 출력을 읽을 수 있다는 것입니다.

화면은 더 많은 명령과 함께 매우 강력한 도구입니다. Ctrl-a, c (Create)를 사용하여 새 가상 창을 추가 할 수 있습니다. Ctrl-a를 누른 다음 n (다음) 또는 p (이전) ...을 눌러 창을 전환하십시오.

그러나 사용하려면 설치해야합니다. 루트 액세스 권한이있는 것 같으므로 문제가되지 않아야합니다.

EDIT : tmux은 동일한 사용 사례를위한 또 다른 훌륭한 솔루션입니다.

+0

감사합니다. 나는 그것을 설치 한 후 화면을 체크 아웃합니다. 나는 별난'을 얻고있다! !! no tgetent - 화면을 만들지 마십시오 .'라는 오류가 있지만 설치를 시도 할 때 알아 차릴 것입니다. – dangerChihuahua007

+0

배포판에는 미리 패키지를 설치할 준비가되어있을 것입니다. 그거 사용 했어? 데비안이나 우분투의 경우, 설치 화면이 적당합니다. 그렇게하면 필요한 패키지도 설치됩니다. – Gyscos

+0

아, 고마워! 필자는'sudo apt-get install libncurses5-dev'를 실행하여이 문제를 해결하여 필요한 c 라이브러리를 확보했습니다. 와우, 화면이 멋지 네요! 방금 분리 된 에뮬레이트 된 터미널에서 서버를 실행하고 ssh 연결을 닫았습니다. 서버가 여전히 실행 중입니다 : D'pstree '로 프로세스를 검증했습니다. 위의 주석에 따라 Django runserver를 사용하지 않을 수도 있지만이 대답은 확실히 원래의 질문을 해결하고 새로운 것을 가르쳐주었습니다. 감사합니다 : D – dangerChihuahua007

4

screen을 사용하여 새 가상 창을 만들고 서버를 실행하십시오.

$ screen 
$ python manage.py runserver 

장고 서버가 실행되기 시작합니다.

Ctrl+A을 누른 다음 D 키를 눌러 해당 화면에서 분리하십시오. 그것은 말할 것이다 :

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

이제 안전하게 터미널에서 로그 아웃 터미널에 다시 로그인 할 수 있습니다, 다른 디렉토리에 코딩의 다른 비트를 수행 휴가를 가고, 당신이 원하는 무엇이든 할.


$ screen -r 

은 일반적했던 것처럼 단순히 Ctrl+C을 누르면, 이제 장고 서버를 죽일하려면에서 분리 한 화면으로 돌아갑니다.


이 화면에서 terminate이 현재 화면 대신 detaching에, Ctrl+D를 사용합니다. 그것은 말할 것이다 :

$ [screen is terminating] 
$ 
+0

퍼티를 닫은 후 화면으로 돌아 오는 방법. 다시 시작하라는 메시지가 표시되지 않습니다. – amitnair92

+0

퍼티에 대해 잘 모릅니다. –

3

사용 nohup. 다음과 같이 명령을 변경하십시오.

nohup sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80 & 
관련 문제