2015-10-07 198 views
3

我試圖在Elastic Beanstalk上部署我的節點服務器,但它不起作用,因爲Elastic Beanstalk支持的最新版本是0.12.6(2015年7月)。使用io.js或最新的節點版本(4.1.2)都是可行的選項,但不清楚如何通過beanstalk獲取ec2實例來完成此操作。Elastic Beanstalk和ES6

我已經嘗試了一堆東西,包括:

  1. 加入4.1.2源到我的.ebextensions配置文件,然後在/tmp/deployment/config/#etc#init#nodejs.conf更新基準,但console.log(process.argv)還是0.12.6。更重要的是,第二次運行時,我得到一些text file busy錯誤,可能是因爲它試圖在節點仍在運行時更改節點包的源...(請參閱https://forums.aws.amazon.com/thread.jspa?threadID=169385
  2. 添加一個文件,該文件下載4.1.2源和ungzips它並更新像https://github.com/kopurando/better-faster-elastic-beanstalk參考,但這似乎並沒有工作,要麼(版本還是0.12.6)

爲什麼這麼難只是運行節點和一些最新的穩定版本已經在AWS上獲得了4個月的廣泛支持?

回答

0

一種選擇是創建一個自定義的AMI(Amazon機器映像),並用它來部署應用程序:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.customenv.html

有自己的文檔中的步驟負載,但簡單來說,你需要:

  1. 自旋向上的服務器
  2. 定製但是你想
  3. 的設備創建的圖像
  4. 創建一個使用新創建的AMI

另一種選擇,如果你想運行節點與ES2015特點是使用babel cli彈性魔豆環境。

你需要一個start任務添加到您的package.json

{ 
    "scripts": { 
    "start": "babel-node index.js", 
    }, 
    "dependencies": { 
    "babel": "^5.8.23", 
    } 
} 

但是......

並不是爲生產使用

你不應該使用生產中的節點。由於高速緩存存儲在內存中導致內存使用率高,這是不必要的沉重。由於整個應用程序需要即時編譯,因此您總是會遇到啓動性能損失。

4

除了使用節點v4,您可以使用babel將es6代碼編譯爲es5代碼並將es5代碼部署到beanstalk。

假設您的所有源代碼都在lib目錄中,其中index.js文件啓動服務器。

lib/ 
    index.js 
    other 

然後你可以使用babel lib -d dist編譯器ES6文件lib目錄和dist目錄中創建文件的ES5版本。

dist/ 
    index.js 
    other 

然後,你可以node dist/index.js運行服務器,只需要如下更改package.json爲魔豆,因爲豆莖使用npm start運行服務器

"scripts": { 
    "start": "node dist/index.js" 
} 

我喜歡用ES6巴貝爾,因爲它對新功能有更多的報道。 你可以找到更多信息

Node.js的服務器例如:https://github.com/babel/example-node-server

通天主頁:https://babeljs.io/