この投稿は長年にわたって多くの注目を集めてきたため、プラットフォームごとのトップソリューションをこの投稿の下部にリストしました。
元の投稿:
私はNode.jsサーバーをバックグラウンドで実行したい、つまりターミナルを閉じてもサーバーを実行し続けたいのです。私はこれをグーグルで調べて、こんなことを思いつきました。チュートリアルただし、意図したとおりに動作しません。そのため、デーモン スクリプトを使用する代わりに、出力リダイレクト (部分2>&1 >> file
) を使用するだけだと考えましたが、これも終了しません。出力/エラーを待っているかのように、ターミナルに空白行が表示されます。
プロセスをバックグラウンドにすることも試みましたが、ターミナルを閉じるとすぐにプロセスも終了してしまいます。
では、ローカル コンピューターをシャットダウンしたときにこれを実行したままにするにはどうすればよいでしょうか?
トップソリューション:
ベストアンサー1
私の回答をコピーする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 app.js
サービス ファイルを にコピーします/etc/systemd/system
。
から始めましょうsystemctl start myapp
。
起動時に実行できるようにしますsystemctl enable myapp
。
ログを見るjournalctl -u myapp
これはLinux にノード アプリを展開する方法 (2018 年版)これには、Linux/ノード サーバーを構築するための AWS/DigitalOcean/Azure CloudConfig を生成するコマンドも含まれています (.service
ファイルを含む)。