Ubuntuサーバーがあります。そこにjsとhtmlコードを含むいくつかのファイルを転送しました。
私はnode.jsのhttp-serverを使用してWebサーバーを起動し、サーバーにhtmlページを表示できます。
システムの接続を切断したりシャットダウンしても実行を継続するには、nohupを使用します。
これは私が使用するコマンドです:
nohup http-server -p 8000 -a 10.4.145.182 &
これにより、10.4.145.182:8000のファイルを視覚化できますが、しばらくするとサーバーがダウンし、人々がブラウザからそのIPのhtmlページにアクセスできないことがわかりました。
nohupは、人々がシステムをシャットダウンしたりサーバーからログアウトしたりしても、バックグラウンドで実行されるタスクだと思います。
それで、あちこち聞いてみると誰かpm2を使ってみるように提案しましたね。だからインストールしました。
pm2を使用するようアドバイスに従って最新バージョンのnodeをインストールした後、pm2を使用してサービスを開始しました。
http-serverのサービスが開始されたと言いますが、ブラウザでポート8000を使用してIPに接続すると開かれません。
これは、htmlファイルとd3ファイルを含むディレクトリで実行するコマンドです。
$ pm2 start $(which http-server) -p 8000
これはpm2シェルの出力です。
サーバーを停止せずに永遠に実行する方法は? pm2に何の問題がありますか?
答え1
結果に気にせず、ただこんなことをしたいなら…
#!/bin/bash
while sleep 5; do
http-server -p 8000 -a 10.4.145.182
wait
done
その後、スクリプトに名前を付けて実行権限を付与したら、「サーバー」が再起動を続けたくない場合は、スクリプトを終了できます。理論的には、完了したらサーバーを再起動します。
これはあなたの質問に答えるだけですが、コメントで提案されているようにシステムユニットを使用する方がはるかに優れています。
以下は、システムが自動的にデバイスを再起動するいくつかの例です。 https://singlebrook.com/2017/10/23/auto-restart-crashed-service-systemd/