簡體   English   中英

如何讓 EC2 上的 Node.js 服務器永遠運行?

[英]How do I leave Node.js server on EC2 running forever?

正如你可以從我的問題中看出的那樣,我是新來的......

我建立了我的第一個網站,我設置了我的第一個 Node.js 服務器來為其提供服務,然后將所有內容推送到 EC2 上。

我在我的 EC2 IP 地址上測試了所有內容,一切似乎都正常。

到目前為止,我一直在本地測試我的應用程序,因此每當我關閉終端時,app.js 都會停止運行,因此本地主機上不會提供任何服務。

現在我的服務器在 EC2 上,每當我關閉我的終端時,同樣的事情就會發生(“顯然”有人會說......)。

所以我的問題是如何讓我的 Node.js 服務器在 EC2 上運行……永遠……這樣我的網站就永遠存在……永遠:)

我閱讀了一些關於名為“永遠”的節點模塊的內容,但我想知道(新的和所有......)為什么這個“永遠”功能不是 Node.js-EC2 系統的默認設置?

我的意思是,如果我錯了請糾正我,但是設置 Web 服務器並推送它以使其永遠保持在線狀態不就是全部意義所在嗎? 無論如何,這不是服務器應該做的(無限地監聽請求)嗎? 如果是這樣,為什么我們需要額外的模塊/設置來實現它?

感謝您的幫助。正如您所知,我不僅在尋找解決方案,還在尋找解釋,因為我真的很困惑。:-)

編輯(您可能需要的一些細節)- 在 EC2 上安裝我的應用程序后,這些是我在終端上執行的步驟(順便說一下,該應用程序在Amazon Linux上運行):

  • 我在終端輸入 ssh -i xxxxxxxxxxx.pem ec2-user@ec2-xx-xx-xx-x.eu-west-1.compute.amazonaws.com

  • 登錄亞馬遜機器后,我轉到相關文件夾並執行 node app.js

  • 機器中有 3 個文件夾: nodenode_modules*name of my app*

  • app.js位於*name of my app*

  • 之后,該站點在我的 EC2 IP 上上線

  • 一旦我關閉終端,一切都關閉了

在調用Node.js之前,請運行以下命令:

screen

這將創建一個持久的環境,允許您的進程在斷開連接后繼續運行。

重新連接時,可以使用此命令重新連接到該環境:

screen -r

這是一個隨機鏈接,可以了解有關屏幕的更多信息:

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

但是,如果您的EC2實例重新啟動,這將無濟於事。 有很多不同的方法可以做到這一點。 將啟動命令添加到/etc/rc.local是一種方法。 這是一個指向亞馬遜指南的鏈接,其中包括向/etc/rc.local添加內容。

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

希望這可以幫助,

詹姆士

我使用了有效的答案一段時間,但有時候屏幕剛剛沒有理由結束屏幕沒有平衡裝載器和其他功能,在生產環境中你應該關心,目前我使用npm組件來完成這項工作。

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

這很容易使用。

$ npm install pm2 -g

然后就像這樣用pm2啟動你的應用程序

$ pm2 start app.js

在上面的鏈接中,您可以找到要執行的差異任務。

希望這有助於像我這樣的新手。

還有更好的方法。 使用forever.js。

請在此處查看: https//github.com/foreverjs/forever

這是一個關於如何在CENTOS上永遠使用chkconfig的很好的教程。

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

或者使用tmux只需輸入tmux屏幕運行節點服務器Ctrl + b點擊D即可完成。

我很晚才加入這個主題並且似乎是每個新手的基本問題。 按照以下說明正確設置您的第一台服務器。

按照ec2實例上的步驟操作(在執行此操作之前,請確保在package.json文件中有pm2的啟動腳本):

npm install pm2 -g

pm2 startup systemd

看到輸出,在最后一行它必須像..

您必須以root身份運行此命令。 執行以下命令:sudo env PATH = $ PATH:/ usr / bin / usr / lib / node_modules / pm2 / bin / pm2 startup systemd -u sammy --hp / home / sammy

使用最后一行命令並使用root權限再次運行。

(在運行下一個命令之前,在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

如果您使用的是 Ubuntu EC2,最好使用以下我們在過去 6 年中一直在使用它並且沒有遇到任何問題。

sudo npm i -g forever

現在開始你的主要例子

forever start index.js
forever start src/server.js

要停止服務器,請使用以下命令

forever stop index.js

列出永遠運行的多個服務器

forever listall

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM