web-dev-qa-db-ja.com

sshセッションを閉じた後でも、Djangoサーバーを実行し続けるにはどうすればよいですか?

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 &を実行すると、サーバーがすぐにシャットダウンします。

ターミナルでsshセッションを終了した後でも、Djangoアプリケーションを実行し続けるにはどうすればよいですか?

PS-この質問が小学校としてあなたを襲ったら申し訳ありません。このような愚かさは、フロントエンドのJavaScriptプログラマーが途方もない速度でサーバー管理者にならなければならないときに起こります。

22

会う 画面

Ssh、スタート画面を介して接続します。これにより、sshが提供するエミュレーターの上に仮想コンソールエミュレーターが開きます。そこでサーバーを起動します。

次に、Ctrl-aを押してからdを押します。これにより、画面セッションが切り離され、バックグラウンドで実行されたままになります。

[R] e-attachするには、screen-rを使用します。

Screenがインストールされておらず、インストールできない場合は、コマンドに&を追加して、バックグラウンドでアプリケーションを起動することもできます。ただし、ターミナルウィンドウを閉じないでください。 bashコマンドを終了するか、Ctrl-dを押して切断するだけです。

Screenの利点は、エラーなどが発生した場合でも、サーバーからの出力を読み取ることができることです。

Screenは非常に強力なツールであり、さらに多くのコマンドがあります。 Ctrl-a、c(作成用)の順に新しい仮想ウィンドウを追加できます。 Ctrl-a、n(次)またはp(前)、...でウィンドウを切り替えます。

ただし、使用するにはインストールする必要があります。あなたはrootアクセス権を持っているように見えるので、これは問題にはならないはずです。

編集: tmux は、同じユースケースのもう1つの優れたソリューションです。

29
Gyscos

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]
$
10
Rakib

Nohupを使用します。コマンドを次のように変更します。

Nohup Sudo python /home/david/myproject/manage.py runserver 68.164.125.221:80 &
6
ayan_2587