[英]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 個文件夾: node
、 node_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
有關更多信息,請點擊鏈接。
如果您使用的是 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.