2009-07-27 34 views
43

Làm thế nào tôi có thể làm cho máy chủ phát triển từ django chạy vĩnh viễn? Vì vậy, nó không dừng lại khi tôi bỏ vỏ.Máy chủ Django vĩnh viễn

Cảm ơn

+5

Tôi hy vọng bạn không yêu cầu điều này để sử dụng trên máy chủ sản xuất. Nó sẽ dẫn bạn đến tà ác nếu bạn. – wlashell

+1

Bạn được cho là chỉ có vỏ mở khi bạn đang phát triển. Điều này là không có nghĩa là cho sản xuất! – Soviut

+5

Và đối với người thử nghiệm beta? – panchicore

Trả lời

42

Nếu bạn sử dụng Linux/Unix, hãy sử dụng lệnh "nohup".

nohup manage.py runserver & 

Sau đó, để có được nó trở lại, sử dụng lệnh fg:

fg 

Nhờ: Xiong Chiamiov

+1

Sau đó, để lấy lại, hãy sử dụng lệnh fg. –

+0

Điều này sẽ không cho phép bạn thoát khỏi trình bao như một công việc sẽ chạy. Đúng? –

+1

@Adam N. Bạn sẽ có thể thoát khỏi trình bao, nohup là dành cho "không bị treo", nó sẽ tiếp tục chạy công việc sau khi bạn rời khỏi trình bao. – MikeN

50

một cách dễ dàng để làm điều này là để chạy:

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

Bây giờ, hãy bấm Ctrl+A và sau đó bấm d để thoát khỏi màn hình này.

Điều này tạo ra máy chủ trong một màn hình và sau đó xóa nó. Bằng cách này, bạn có thể chỉ cần quay lại và nhập:

[[email protected]]$screen -r 

và bạn có thể kiểm soát máy chủ một lần nữa và xem những gì đang diễn ra.

+1

Có thể đăng xuất và trở lại màn hình không? –

+0

@AdamNelson Có, nếu bạn không dứt khoát chấm dứt phiên màn hình, nó sẽ tiếp tục chạy ngay cả khi đăng xuất. – 0sh

+1

Một vấn đề với giải pháp này là chạy máy chủ khởi chạy giao diện điều khiển máy chủ và không thể cung cấp lệnh cho thiết bị đầu cuối, do đó không thể chạy phương thức -d màn hình- – Freestyle076

2

tạo ra một tập tin với điều này, ví dụ /tmp/screendjango:

screen python manage.py runserver 

và sau đó bạn đặt:

screen -dmS django -c /tmp/screendjango 

cho đính kèm phiên bạn đặt

screen -d -r django. 
+1

Tôi nghĩ đó là cách phức tạp nhất để sử dụng màn hình, bao giờ hết. –

0

Trên Windows, chạy

pythonw.exe manage.py runserver 
0

Tôi sắp sửa thực hiện việc này. Kịch bản là tôi đang tạo mẫu nhanh cho một khách hàng và họ cần phải xem những thứ trông như thế nào. Sẽ không bao giờ có hơn 2-3 người vào lúc này, nhưng tôi không muốn thiết lập Apache hoặc duy trì trạng thái đăng nhập.

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

Giống như Travis nói-- màn hình sử dụng. Nếu bạn chưa cài đặt, hãy tải xuống:

sudo apt-get install screen 
screen 

Nhấn enter. Bây giờ nó giống như bạn đang ở trong một cửa sổ thiết bị đầu cuối khác nhau.

Bạn bắt đầu với máy chủ:

python manage.py runserver 0.0.0.0:8000 

Bây giờ bạn đang chạy máy chủ, và bạn muốn quay trở lại màn hình đầu tiên của bạn trong khi cho phép các ứng dụng django tiếp tục chạy. Màn hình có một tính năng đẹp được tích hợp sẵn cho điều đó.Để quay trở lại loại ga chính của bạn:

ctrl+a d 

Từ đó, bạn có thể nhận được trở lại màn hình django bằng cách gõ:

screen -r 

Nếu bạn có nhiều màn hình mở, bạn có thể đạt được điều đúng bởi đó là 4-5 chữ số ID:

screen -r 1333 

Và các trang người đàn ông là khá tốt:

man screen 
+0

Tôi rất quan tâm đến giải pháp của bạn. Vì tôi đang sử dụng CentOS, tôi đã phải sử dụng 'pipl install screen'. Cài đặt đã thành công nhưng sau đó tôi gõ 'screen' và get -bash: screen: không tìm thấy lệnh. Bất kỳ ý tưởng? Cảm ơn – Dmitry

+1

@dmitrymar mặc dù bạn có thể đã cài đặt thành công màn hình, có vẻ như không nằm trong PATH của bạn. Bạn sẽ muốn tìm ra nơi pipl cài đặt nó, và chắc chắn rằng thư mục mà nó đã được cài đặt vào trong PATH. Kiểm tra 'echo $ PATH' để xem đường dẫn hiện tại là gì. Và 'màn hình' nào để xác minh rằng vỏ của bạn nhìn thấy nó ở đâu đó trong đường dẫn. – kelorek

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

>exit 
+0

+1 điều này rất đơn giản và tôi có thể xác nhận nó hoạt động trên centos (và không thể nghĩ ra bất kỳ lý do tốt nào đó là nền tảng cụ thể, cho rằng bạn đang sử dụng hệ thống unix với bash) – cderwin

+0

Cảm ơn. Hoạt động tuyệt vời !!! – thedp

Các vấn đề liên quan