1. ホーム
  2. node.js

[解決済み】node.jsアプリをバックグラウンドサービスとして実行するにはどうすればいいですか?

2022-03-23 08:55:42

質問

この記事は長年にわたって多くの注目を集めてきましたので、この記事の下にプラットフォームごとの上位ソリューションをリストアップしました。


元の記事 :

node.jsのサーバーをバックグラウンドで動作させたい、つまり、ターミナルを閉じてもサーバーが動作し続けるようにしたい。私はこれをグーグル検索し、次のようになりました。 チュートリアル しかし、意図したように動作しません。そこで、そのデーモンスクリプトを使う代わりに、出力リダイレクト( 2>&1 >> file しかし、これも終了しません。ターミナルに空白行が表示され、出力やエラーを待っているようです。

また、プロセスをバックグラウンドにしようとしましたが、ターミナルを閉じるとすぐにプロセスも終了してしまいます。

では、ローカルのコンピュータをシャットダウンしたときに、起動したままにするにはどうすればよいのでしょうか?


トップソリューション :

解決方法は?

の回答をコピーしています。 Node.jsアプリケーションを独自のプロセスとして実行するにはどうすればよいですか?

2015年回答 : ほとんどすべての Linux ディストリビューションには systemd が搭載されています。 forever、monit、PM2などはもう必要ありません - OSがすでにこれらのタスクを処理しています。 .

を作る。 myapp.service ファイルを作成します('myapp'はアプリの名前に置き換えます)。

[Unit]
Description=My app

[Service]
ExecStart=/var/www/myapp/app.js
Restart=always
User=nobody
# Note Debian/Ubuntu uses 'nogroup', RHEL/Fedora uses 'nobody'
Group=nogroup
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/var/www/myapp

[Install]
WantedBy=multi-user.target

Unixを初めて使う人のためのメモ。 /var/www/myapp/app.js が必要です。 #!/usr/bin/env node を最初の行に追加し、実行可能モードをオンにします。 chmod +x myapp.js .

サービスファイルを /etc/systemd/system .

で開始します。 systemctl start myapp .

でブート時に実行できるようにします。 systemctl enable myapp .

でログを見る journalctl -u myapp

からの引用です。 Linuxでnodeアプリをデプロイする方法 2018年版 を含む)、Linux/ノードサーバーを構築するためのAWS/DigitalOcean/Azure CloudConfigを生成するコマンドも含まれています。 .service ファイル)を作成します。