web-dev-qa-db-ja.com

EC2でNode.jsサーバーを永久に実行したままにするにはどうすればよいですか?

あなたが私の質問でわかるように、私はこれに新しいです...

最初のWebサイトを構築し、最初のNode.jsサーバーをセットアップしてそれを提供し、すべてをEC2でライブ配信しました。

EC2 IPアドレスですべてをテストしましたが、すべてが機能しているようです。

これまで、アプリをローカルでテストしてきたので、ターミナルを閉じるたびにapp.jsの実行が停止し、localhostで何も提供されないことが理にかなっています。

サーバーがEC2上にあるため、端末を閉じるたびに同じことが起こります(「明らかに」言うことができます)。

だから私の質問は、Node.jsサーバーをEC2でどのように実行し続けるのか...永遠に...私のサイトがいつまでも続くようにすることです:)

「永遠に」と呼ばれるノードモジュールについて何かを読みましたが、なぜこの「永遠に」機能がNode.js-EC2システムのデフォルト設定ではないのか疑問に思っています。

私が間違っている場合は修正しますが、ウェブサーバーをセットアップしてライブでプッシュし、それが永遠にライブであるようにすることの全体のポイントではありませんか?それはとにかくサーバーが何をすることになっているのですか?そして、もしそうなら、なぜそれを達成するために追加のモジュール/設定が必要なのですか?

あなたの助けに感謝します..あなたが言うことができるように、私は解決策を探しているだけでなく、私も本当に混乱したので説明も探しています.. :-)

[〜#〜] edit [〜#〜](必要な場合があります)-アプリをEC2にインストールした後、これらは端末で実行する手順です(アプリはAmazon Linuxで実行されていますところで) :

  • ターミナルでssh -i xxxxxxxxxxx.pem [email protected]と入力します

  • Amazonマシンにログオンした後、関連するフォルダーに移動し、ノードapp.jsを実行します

  • マシンには3つのフォルダーがあります:nodenode_modules*name of my app*

  • app.js*name of my app*にあります

  • その後、サイトはEC2 IPで公開されます

  • ターミナルを閉じると、すべてがオフになります

52
Sprout Coder

Node.jsを呼び出す前に、次のコマンドを実行します。

screen

これにより、切断後もプロセスを実行し続けることができる永続的な環境が作成されます。

再接続すると、次のコマンドを使用してその環境に再接続できます。

screen -r

画面の詳細については、ランダムリンクをご覧ください。

http://www.rackaid.com/blog/linux-screen-tutorial-and-how-to/

ただし、EC2インスタンスが再起動する場合、これは役に立ちません。それを行うには多くの異なる方法があります。起動コマンドを/etc/rc.localに追加するのは1つの方法です。 /etc/rc.localに何かを追加することを含むAmazonガイドへのリンクを次に示します。

http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/building-shared-amis.html

お役に立てれば、

ジェームス

59
James Wilson

私はしばらくの間有効な答えで働いていましたが、画面が理由なく終了することもあります。画面にはバランスローダーがありません。他の機能は生産環境で気にする必要があります。現在、私はこの仕事をするためにnpmコンポーネントを使用しています。

https://www.npmjs.com/package/pm2

これはとても使いやすいです。

$ npm install pm2 -g

次に、このようにpm2でアプリを起動します

$ pm2 start app.js

上記のリンクでは、必要に応じて実行するさまざまなタスクを見つけることができます。

これが私のような初心者に役立つことを願っています。

26

より良い方法があります。 forever.jsを使用します。

こちらをご覧ください: https://github.com/foreverjs/forever

これは、CENTOSで永久にchkconfigを使用するための素晴らしいチュートリアルです。

http://aronduby.com/starting-node-forever-scripts-at-boot-w-centos/

13
Joseph Juhnke

私はスレッドに参加するのが非常に遅く、すべての初心者にその基本的な問題があるようです。以下に従って、最初のサーバーを適切にセットアップします。

ec2インスタンスの手順に従います(これを行う前に、package.jsonファイルにpm2の起動スクリプトがあることを確認してください)。

npm install pm2 -g

pm2 startup systemd

出力を確認し、最後の行で次のようにする必要があります。

このコマンドをルートとして実行する必要があります。次のコマンドを実行します。Sudo env PATH = $ PATH:/ usr/bin/usr/lib/node_modules/pm2/bin/pm2 startup systemd -u sammy --hp/home/sammy

最後の行コマンドを取得し、ルート権限で再度実行します。

(次のコマンドを実行する前に、package.jsonファイルにpm2の新しい開始スクリプトを指定します。例:"pm2-start": "pm2 start ./bin/www"

npm run pm2-start

詳細については、リンクを参照してください。

https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-16-04

または、tmuxを使用します。tmux画面を入力し、ノードサーバーを実行します。Ctrl+ b Dを押して完了です。

2
Pritam Roy