2009-07-27 9 views
43

Jak sprawić, by serwer deweloperski z django działał na stałe? Tak, że nie przestaje, kiedy opuszczam powłokę.Django runserver permanent

Dzięki

+5

Mam nadzieję, że nie pytasz o to na serwer produkcyjny. Doprowadzi cię to tylko do złego. – wlashell

+1

Powinieneś mieć otwartą powłokę tylko podczas pracy. To NIE jest przeznaczone do produkcji! – Soviut

+5

A dla beta testerów? – panchicore

Odpowiedz

42

Jeśli jesteś na Linux/Unix użyj polecenia "nohup".

nohup manage.py runserver & 

Potem ją odzyskać, należy użyć polecenia fg:

fg 

dzięki: Xiong Chiamiov

+1

Aby ją odzyskać, użyj polecenia fg. –

+0

To nie pozwoli ci wyjść z powłoki podczas pracy. Dobrze? –

+1

@Adam N. Będziesz mógł wyjść z powłoki, nohup jest dla "bez zawieszenia", to będzie kontynuował pracę po opuszczeniu powłoki. – MikeN

50

inny łatwy sposób, aby to zrobić, to uruchomić:

[[email protected]]$screen 
[[email protected]]$python manage.py runserver 0.0.0.0:8000 

Teraz naciśnij Ctrl+A, a następnie naciśnij d, aby wyjść z tego ekranu.

Spowoduje to utworzenie serwera na ekranie, a następnie jego odłączenie. W ten sposób możesz po prostu wrócić i wpisać:

[[email protected]]$screen -r 

. Możesz ponownie przejąć kontrolę nad serwerem i zobaczyć, co się dzieje.

+1

Czy można się wylogować i wrócić do ekranu? –

+0

@AdamNelson Tak, jeśli nie zakończysz jawnie sesji ekranowej, będzie ona działać nawet po wylogowaniu. – 0sh

+1

Jednym z problemów z tym rozwiązaniem jest to, że uruchomienie serwera uruchamia konsolę serwera i nie można dostarczyć poleceń do terminala, dlatego nie może uruchomić ekranu -d metoda – Freestyle076

2

utworzyć plik z tym przykładem /tmp/screendjango:

screen python manage.py runserver 

a następnie umieścić:

screen -dmS django -c /tmp/screendjango 

dla dołączyć sesji umieścić

screen -d -r django. 
+1

Myślę, że to najbardziej skomplikowany sposób korzystania z ekranu, nigdy. –

0

W systemie Windows uruchom

pythonw.exe manage.py runserver 
0

Zaraz to zrobię. Scenariusz polega na tym, że szybko prototypuję klienta i muszę zobaczyć, jak to wygląda. Nigdy nie będzie więcej niż 2-3 osób na to w czasie, ale nie chcę, aby skonfigurować Apache lub pozostać zalogowany.

sudo ./manage.py runserver 192.168.1.94:80 [run this on port 80 so a normal business user can see it] 
ctrl+z [to suspend the job (same thing as appending & to the above command but then I don't need to deal with entering the sudo password on the command line)] 
bg %1 [puts the job in the background] 
jobs [just to see what's going on] 
exit [exit the session] 
22

Jak ekranie użytku Travisa says--. Jeśli go jeszcze nie masz, pobierz go:

sudo apt-get install screen 
screen 

Naciśnij enter. Teraz jest tak, jakbyś był w innym oknie terminala.

Zacznij wam serwer z:

python manage.py runserver 0.0.0.0:8000 

Teraz masz uruchomiony serwer, a chcesz wrócić do pierwszego ekranu podczas pozwalając aplikację django kontynuuj uruchomiony. Ekran ma wbudowaną odpowiednią funkcję.Aby wrócić do głównego terminala:

ctrl+a d 

Stamtąd można wrócić do ekranu django wpisując:

screen -r 

Jeśli masz kilka ekranów otwarte można dotrzeć do prawidłowego jeden po to 4-5 cyfrowy numer ID:

screen -r 1333 

i man są bardzo dobre: ​​

man screen 
+0

Jestem bardzo zainteresowany twoim rozwiązaniem. Ponieważ używam CentOS, musiałem użyć 'ekranu instalacji pipl'. Instalacja zakończyła się sukcesem, ale potem wpisuję 'screen' i get -bash: screen: command not found. Jakieś pomysły? Dzięki – Dmitry

+1

@dmitrymar nawet jeśli udało ci się zainstalować ekran, wydaje się, że nie jest on w Twojej PATH. Będziesz chciał dowiedzieć się, gdzie zainstalował go pipl i upewnij się, że katalog, w którym został zainstalowany, znajduje się w PATH. Sprawdź 'echo $ PATH', aby zobaczyć, jaka jest obecna ścieżka. I 'który ekran' sprawdza, czy twoja powłoka widzi gdzieś na ścieżce. – kelorek

9
on Ubuntu run:>./manage.py runserver 0.0.0.0:8000 > /dev/null 2>&1 & 

>exit 
+0

+1 to jest proste i mogę potwierdzić, że działa również na centach (i nie może wymyślić żadnego konkretnego powodu, że byłoby to specyficzne dla platformy, biorąc pod uwagę, że jesteś w systemie uniksowym z bash) – cderwin

+0

Dzięki. Działa świetnie!!! – thedp

Powiązane problemy